You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab 3D绘图如何为轨迹添加各侧面2D透视投影阴影/倒影

Matlab 3D轨迹添加坐标面投影阴影实现方法

实现逻辑很简单:你需要的三个侧面2D投影阴影,本质是将原始3D轨迹分别投影到XY、XZ、YZ三个坐标平面上,固定投影平面对应的第三维坐标为坐标轴范围的边界值,用浅灰色半透明线条绘制即可模拟阴影效果。

完整可运行代码如下:

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);

% 绘制原始3D轨迹
plot3(y(:,1),y(:,2),y(:,3), 'color', 'blue','LineWidth',2)
grid on;
hold on; % 开启画布叠加绘制,避免覆盖原有图像

% 获取当前坐标轴范围,保证投影刚好贴在坐标面边界
ax = gca;
x_lim = ax.XLim;
y_lim = ax.YLim;
z_lim = ax.ZLim;

% 投影到XY底面(z固定为z轴最小值)
plot3(y(:,1), y(:,2), repmat(z_lim(1), size(y,1), 1), 'Color', [0.5 0.5 0.5 0.6], 'LineWidth', 1.5);
% 投影到XZ右侧面(y固定为y轴最大值)
plot3(y(:,1), repmat(y_lim(2), size(y,1), 1), y(:,3), 'Color', [0.5 0.5 0.5 0.6], 'LineWidth', 1.5);
% 投影到YZ右侧面(x固定为x轴最大值)
plot3(repmat(x_lim(2), size(y,1), 1), y(:,2), y(:,3), 'Color', [0.5 0.5 0.5 0.6], 'LineWidth', 1.5);

hold off;
view(3) % 保持3D视角

效果和你提供的参考图逻辑一致:
效果参考图

你可以根据需求调整投影线的颜色、透明度(Color参数第四个值为透明度,0为完全透明,1为完全不透明)、线条粗细,或者修改投影固定的坐标轴边界值(比如把z_lim(1)改成z_lim(2)就可以把XY面投影放到顶面)。

内容的提问来源于stack exchange,提问作者MathMath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:36:03