3D绘图中的阴影Matlab

sy5wg1nm  于 2023-05-18  发布在  Matlab
关注(0)|答案(1)|浏览(265)

我想把轨迹的阴影/反射添加到我的3D图**(2D透视投影)**的每一侧,类似于下图:

a = 1.;
b = 0.3;  
c = 0.3;

b1 = 0.008;
b2 = 0.008;
b3 = 0.002;

c1 = 0.004;
c2 = 0.0045;

eta = [50 20 20];
F = @(t,y) [a*y(1) - b1*y(1)*y(2)-b2*y(1)*y(3)- b3* y(1)*y(1) ; -b*y(2) + c1*y(1)*y(2); -c*y(3) + c2*y(1)*y(3)];
[t,y] = ode45(F,[0: (300/1000000): 300], eta);
plot3(y(:,1),y(:,2),y(:,3), 'color', 'blue','LineWidth',2)
grid on;
enyaitl3

enyaitl31#

我想最简单的方法是在轴的平面上画线。例如,在您给出的示例中(我假设a = 0.3,因为您没有指定a),plot3产生以下图形:

以下是您要添加的内容:

hold on
plot3(0*y(:,1),y(:,2),y(:,3), 'color', 'k','LineWidth',1); % shadow on the Y-Z plane
plot3(y(:,1),0*y(:,2),y(:,3), 'color', 'k','LineWidth',1); % shadow on the X-Z plane
plot3(y(:,1),y(:,2),0*y(:,3), 'color', 'k','LineWidth',1); % shadow on the X-Y plane

它会产生这样的图:

仅供参考,您还可以使用imagesc为表面生成阴影,例如in this page,它基本上是在轴上添加3D表面的2D图像。

相关问题