垂直于椭球的方程
Equation of perpendicular to ellipsoid
我有一个扁椭圆体 (x^2+y^2)/a^2+z^2/b^2 和 space P(xp, xp, xp) 中的一个点。
我需要从P求出与椭球垂直的方程,然后求出椭球与这条线的交点坐标。
任一点的梯度为(2X/a²,2Y/a²,2Z/b²)
,必须与(Xp,Yp,Zp)
平行。然后X/a²Xp=Y/a²Yp=Z/b²Zp
.
消除X
和Y
,
(Z.a²Xp/b²Zp)²/a² + (Z.a²Yp/b²Zp)²/a² + Z²/b² = 1.
给你 Z
.
更新:
正如@dmuir 所指出的,这条线不通过原点,平行度必须为 (X-Xp,Y-Yp,Z-Zp)
。
这给出 X/a²(X-Xp)=Y/a²(Y-Yp)=Z/b²(Z-Zp)
。 X
和Y
仍然可以消去,但是是Z
的单应函数。我猜 Z
中的最终方程是四次方程。
这有点复杂。在通常的(大地测量)纬度、经度、高度坐标系中,高度确实是沿法线到椭圆体的距离。所以你想要的是从 ECEF(即 x,y,z)坐标到大地坐标的转换的一部分。例如here讨论
对于扁椭圆体,我们可以进行简化 - 求解轴为 a
和 b
的椭圆和坐标为 P2=(Sqrt(px^2 + py^2), pz)
的点的二维问题,然后变换找到的点 C2(x,y ) 到 3D 为
C = (x*cos(f), x*sin(f), y)
where
f = arctan2(py, px)
点与椭圆的垂直相交于最近点。
我们通过 angular 参数 t
写出椭圆方程
E(t)= (a * cos(t), b * sin(t))
Min.distance/normal 条件导致等式
D' = E'(t) * (E(t) - P2) = 0 (dot product)
-a^2 * cos(t) * sin(t) + p2.x * a * sin(t) + b^2 * cos(t) * sin(t) - p2.y * b * cos(t) = 0
求解t,首先检查cos(t)=0是否为解。如果不是,除以 cos(t)
-a^2 * sin(t) + p2.x * a * tg(t) + b^2 * sin(t) - p2.y * b = 0
然后将sin和tg代入p=half-angle tangent解四次方程
p = tg(t/2)
-a^2 * 2 * p / (1 + p^2) + p2.x * a * 2 * p /(1 - p^2) +
b^2 * 2 * p / (1 + p^2) - p2.y * b = 0
-a^2 * 2 * p * (1 - p^2) + p2.x * a * 2 * p * (1 + p^2) +
b^2 * 2 * p * (1 - p^2) - p2.y * b * (1 - p^4)= 0
椭圆外的点有两个根(内部点最多有 4 个根,不确定在 3D 中会发生什么)。选择合适的一个(最近点)。按照描述将 2D 案例转换为 3D。
我有一个扁椭圆体 (x^2+y^2)/a^2+z^2/b^2 和 space P(xp, xp, xp) 中的一个点。
我需要从P求出与椭球垂直的方程,然后求出椭球与这条线的交点坐标。
任一点的梯度为(2X/a²,2Y/a²,2Z/b²)
,必须与(Xp,Yp,Zp)
平行。然后X/a²Xp=Y/a²Yp=Z/b²Zp
.
消除X
和Y
,
(Z.a²Xp/b²Zp)²/a² + (Z.a²Yp/b²Zp)²/a² + Z²/b² = 1.
给你 Z
.
更新:
正如@dmuir 所指出的,这条线不通过原点,平行度必须为 (X-Xp,Y-Yp,Z-Zp)
。
这给出 X/a²(X-Xp)=Y/a²(Y-Yp)=Z/b²(Z-Zp)
。 X
和Y
仍然可以消去,但是是Z
的单应函数。我猜 Z
中的最终方程是四次方程。
这有点复杂。在通常的(大地测量)纬度、经度、高度坐标系中,高度确实是沿法线到椭圆体的距离。所以你想要的是从 ECEF(即 x,y,z)坐标到大地坐标的转换的一部分。例如here讨论
对于扁椭圆体,我们可以进行简化 - 求解轴为 a
和 b
的椭圆和坐标为 P2=(Sqrt(px^2 + py^2), pz)
的点的二维问题,然后变换找到的点 C2(x,y ) 到 3D 为
C = (x*cos(f), x*sin(f), y)
where
f = arctan2(py, px)
点与椭圆的垂直相交于最近点。
我们通过 angular 参数 t
E(t)= (a * cos(t), b * sin(t))
Min.distance/normal 条件导致等式
D' = E'(t) * (E(t) - P2) = 0 (dot product)
-a^2 * cos(t) * sin(t) + p2.x * a * sin(t) + b^2 * cos(t) * sin(t) - p2.y * b * cos(t) = 0
求解t,首先检查cos(t)=0是否为解。如果不是,除以 cos(t)
-a^2 * sin(t) + p2.x * a * tg(t) + b^2 * sin(t) - p2.y * b = 0
然后将sin和tg代入p=half-angle tangent解四次方程
p = tg(t/2)
-a^2 * 2 * p / (1 + p^2) + p2.x * a * 2 * p /(1 - p^2) +
b^2 * 2 * p / (1 + p^2) - p2.y * b = 0
-a^2 * 2 * p * (1 - p^2) + p2.x * a * 2 * p * (1 + p^2) +
b^2 * 2 * p * (1 - p^2) - p2.y * b * (1 - p^4)= 0
椭圆外的点有两个根(内部点最多有 4 个根,不确定在 3D 中会发生什么)。选择合适的一个(最近点)。按照描述将 2D 案例转换为 3D。