为什么plot3只显示GNU Octave中的轴?

问题描述 投票:0回答:1

我们想要绘制由 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
plot 3d octave
1个回答
0
投票

我相信您的问题只是渲染/可见性问题。这可能是一个错误,但需要更多的测试才能确定。 关于数据本身,如果你收集数据点并一次性绘制它们,它就会用线将数据点连接起来,你可以看到轨迹。 或者,设置不同的绘图/标记样式可以使原始方法更加明显。 例如:

只需向plot3命令添加格式即可:

`plot3(x,y,z,'r*')

向我展示以下内容:

plot3(x,y,z)

original plot with red asterisks for points

或者,如果我将脚本更改为如下所示,它将在循环后将所有点绘制在一起:

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)



生产: image with points collected into a single plot

© www.soinside.com 2019 - 2024. All rights reserved.