给出两个端点(3D)绘制半圆形路径

时间:2014-02-27 23:43:07

标签: python algorithm matlab 3d

假设像地球一样的球形物体。说我有两个终点3D,我现在和我想去的地方。我想在大气层中构建一条路径 - 某种半圆形路径可以从一个点插到另一个点。 地球上的路径就像http://workshop.chromeexperiments.com/projects/armsglobe/

中的路径一样

根据当前位置计算下一个位置。有人曾经为此做过数学计算吗?

2 个答案:

答案 0 :(得分:3)

  1. 类似球体的对象

    你的意思是椭圆体,其中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);
    

    其中:

    • Rp是椭圆体的极半径(Z轴上的中心和极点之间)
    • Re是椭球的赤道半径(XY平面上的圆)
    • PI3.1415 ...
  2. 2点之间的曲线路径

    现在您拥有P0,P1 3D 积分。将它们转换为球面坐标,以便:

    P0(a0,b0,h0)
    P1(a1,b1,h1)
    

    我假设h=0。现在只需通过某个参数P(a,b,h)

    P1 P0插入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)
    

    H高于表面的最大高度。您可以添加任何曲线类型...现在只需执行for循环,其中t0转到1一步(0.01)并计算{ {1}}。将其转换回笛卡尔坐标并绘制线段。或者只是绘制你的移动物体......

答案 1 :(得分:1)

如果你想要与链接完全相同的东西,你需要找到或派生(我不倾向于做微积分,可能需要立即得到它的公式)3D考虑到地球曲率的轨迹公式。你最好尝试mathematics stack并让他们得出公式。虽然,他们可能会将您重定向到更加物理化的堆栈交换,这可能知道公式。

然而,您也可以通过创建弧线来欺骗,但它可能看起来不太好看,除非您在选择弧的中间点时要非常小心。