Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 绘制给定两个端点的半圆路径(3D)_Python_Algorithm_Matlab_3d - Fatal编程技术网

Python 绘制给定两个端点的半圆路径(3D)

Python 绘制给定两个端点的半圆路径(3D),python,algorithm,matlab,3d,Python,Algorithm,Matlab,3d,假设一个像地球一样的球形物体。假设我有两个终点3D,我现在在哪里,我想去哪里。我想在大气中构造一条路径——某种半圆形路径,从一点插值到另一点。 地球上的一条路,就像地球上的那条 根据当前位置计算下一个位置。以前有人做过计算吗?如果你想要和链接一样精确的东西,你需要找到或推导出一个考虑到地球曲率的3D轨迹公式(我不想做现在推导公式可能需要的微积分)。你最好试着让他们推导公式。不过,他们可能会将您重定向到更面向物理的堆栈交换,这可能知道公式 然而,你也可以简单地通过创建一个弧来作弊,但是除非你非常小

假设一个像地球一样的球形物体。假设我有两个终点3D,我现在在哪里,我想去哪里。我想在大气中构造一条路径——某种半圆形路径,从一点插值到另一点。 地球上的一条路,就像地球上的那条


根据当前位置计算下一个位置。以前有人做过计算吗?

如果你想要和链接一样精确的东西,你需要找到或推导出一个考虑到地球曲率的3D轨迹公式(我不想做现在推导公式可能需要的微积分)。你最好试着让他们推导公式。不过,他们可能会将您重定向到更面向物理的堆栈交换,这可能知道公式

然而,你也可以简单地通过创建一个弧来作弊,但是除非你非常小心地选择弧的中点,否则它看起来可能不会那么好

  • 球形对象

    你是说以
    Z
    为旋转轴,平面
    XY
    为赤道的椭球体?如果是,则使用球面坐标系,如
    P(a,b,h)a=,b=,h=
    。。。离地高度:

    r=(Re+h)*cos(b);
    x=r*cos(a);
    y=r*sin(a);
    z=(Rp+h)*sin(b);
    
    其中:

    • Rp
      是椭球体的极半径(在Z轴的中心和极之间)
    • Re
      是椭球体的赤道半径(XY平面上的圆)
    • PI
      3.1415
  • 两点之间的曲线路径

    现在您有了
    P0、P1
    3D点。将它们转换为球坐标,以便:

    P0(a0,b0,h0)
    P1(a1,b1,h1)
    
    我假设
    h=0
    。现在只需通过一些参数将P(a,b,h)P0插值到
    P1

    这将在曲面上创建路径。要做到这一点,只需向
    h
    添加一些曲线,如下所示:

    h=h0+(h1-h0)*t+H*cos(PI*t)
    
    其中,
    H
    是高于表面的最大高度。您可以添加任何曲线类型。。。现在只需执行
    for
    循环,其中
    t
    通过某个步骤(
    0.01
    )从
    0
    1
    ,然后计算
    P
    。将其转换回笛卡尔坐标并绘制线段。或者只是画你的移动物体

  • h=h0+(h1-h0)*t+H*cos(PI*t)