假设有一个像地球这样的球形物体。假设我有两个 3D 端点,即我当前所在位置和我想去的位置。我想在大气中构建一条路径 - 某种从一点插值到另一点的半圆形路径。
地球上的一条路就像http://workshop.chromeexperiments.com/projects/armsglobe/ http://workshop.chromeexperiments.com/projects/armsglobe/
下一个位置是根据当前位置计算的。以前有人计算过吗?
-
球状物体
你的意思是椭圆体Z
作为旋转轴和平面XY
作为赤道?如果是,请使用球坐标系,例如P(a,b,h) a=<0,2PI>, b=<-PI,+PI>, h=<0,+inf>
... 表面以上高度:
r=(Re+h)*cos(b);
x=r*cos(a);
y=r*sin(a);
z=(Rp+h)*sin(b);
Where:
-
Rp
是椭球体的极半径(Z 轴上的中心和极点之间)
-
Re
是椭球体的赤道半径(XY 平面上的圆)
-
PI
is 3.1415
...
-
两点之间的曲线路径
现在你有P0,P1
3D点。将它们转换为球坐标,这样你就有:
P0(a0,b0,h0)
P1(a1,b1,h1)
我假设h=0
。现在只需插值P(a,b,h)
P0 to P1
通过一些参数t=<0,1>
a=a0+(a1-a0)*t
b=b0+(b1-b0)*t
h=h0+(h1-h0)*t
这将在表面上创建路径。要使其达到上面的效果,只需添加一些曲线即可h
像这样:
h=h0+(h1-h0)*t+H*cos(PI*t)
Where H
是表面上方的最大高度。您可以添加任何曲线类型...现在就做for
循环哪里t
来自0
to 1
通过某个步骤(0.01
)并计算P
。将其转换回笛卡尔坐标并绘制线段。或者只是画出移动的物体......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)