当我开始使用实际坐标时,我在计算从点到平面的距离时遇到了麻烦。我可以得到一个使用虚拟坐标的示例,使用的数字介于-10和10之间。将问题应用于实际的UTM坐标后,我就开始得到奇怪的答案。
# Using dummy coordinates
p1 = np.array([1.15, 0.62, -1.01])
p2 = np.array([1.74, 0.86, -0.88])
p3 = np.array([0.91, 0.79, -1.84])
tp = np.array([1.17, 0.94, -1.52])
u = p2 - p1
v = p3 - p1
# vector normal to plane
n = np.cross(u, v)
n /= np.linalg.norm(n)
p_ = tp - p0
dist_to_plane = np.dot(p_, n)
print(dist_to_plane)
# Using real-world coordinates
p1 = np.array([503562, 2811504, 1771], dtype='float64')
p2 = np.array([504122, 2810766, 1820], dtype='float64')
p3 = np.array([504325, 2811311, 1042], dtype='float64')
tp = np.array([503618, 2811286, 1808], dtype='float64')
u = p2 - p1
v = p3 - p1
# vector normal to plane
n = np.cross(u, v)
n /= np.linalg.norm(n)
p_ = tp - p0
dist_to_plane = np.dot(p_, n)
print(dist_to_plane)
使用伪坐标,我得到dist = 0.115,根据目视检查,我认为这是正确的。
使用现实世界的坐标,我得出dist = 1820961.09,这绝对是不正确的。距离应在100左右。
答案 0 :(得分:0)
首先,p0
是未定义的(如Craig Meier所述)。
第二,您不需要它。参见图片here。您需要减去代码中的点P,即p_ = tp - p1
。
第三,切记取结果的绝对值(如Quang Hoang所述)。