我们想要绘制由 GNU Octave 计算的值的 3D 绘图。 它只向我们显示图表的轴,没有点。当制作普通的二维图(即图(x,y))时,一切正常。我们使用的代码是:
t=0;
dt = 0.1;
x=0;
y=0;
z=0;
vx=40;
vy=15;
vz=15;
m=0.43;
g=9.81;
rho=0.9982;
Cw=0.47;
A=0.03789;
while (z>=0)
Fwlx = 0.5*Cw*A*rho*(vx)^2;
Fwly = 0.5*Cw*A*rho*(vy)^2;
Fwlz = 0.5*Cw*A*rho*(vz)^2;
Fz = m*g;
Fresx = -Fwlx;
Fresy = -Fwly;
Fresz = -Fwlz-Fz;
ax = Fresx/m;
ay = Fresy/m;
az = Fresz/m;
vx = vx + ax*dt;
vy = vy + ay*dt;
vz = vz + az*dt;
x = x + vx*dt;
y = y + vy*dt;
z = z + vz*dt;
t = t + dt;
plot3 (x,y,z)
hold on
end
我相信您的问题只是渲染/可见性问题。这可能是一个错误,但需要更多的测试才能确定。 关于数据本身,如果你收集数据点并一次性绘制它们,它就会用线将数据点连接起来,你可以看到轨迹。 或者,设置不同的绘图/标记样式可以使原始方法更加明显。 例如:
只需向plot3命令添加格式即可:
`plot3(x,y,z,'r*')
向我展示以下内容:
plot3(x,y,z)
或者,如果我将脚本更改为如下所示,它将在循环后将所有点绘制在一起:
t=0;
dt = 0.1;
x=0;
y=0;
z=0;
vx=40;
vy=15;
vz=15;
m=0.43;
g=9.81;
rho=0.9982;
Cw=0.47;
A=0.03789;
xp = yp = zp = [];
while (z>=0)
Fwlx = 0.5*Cw*A*rho*(vx)^2;
Fwly = 0.5*Cw*A*rho*(vy)^2;
Fwlz = 0.5*Cw*A*rho*(vz)^2;
Fz = m*g;
Fresx = -Fwlx;
Fresy = -Fwly;
Fresz = -Fwlz-Fz;
ax = Fresx/m;
ay = Fresy/m;
az = Fresz/m;
vx = vx + ax*dt;
vy = vy + ay*dt;
vz = vz + az*dt;
x = x + vx*dt;
y = y + vy*dt;
z = z + vz*dt;
t = t + dt;
xp(end+1) = x;
yp(end+1) = y;
zp(end+1) = z;
end
plot3 (xp,yp, zp)