You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算3D空间中点到直线的垂直距离向量?

3D空间中点到直线的垂直距离向量计算

基于Stack Overflow相关思路,我们要实现3D空间中点到直线的垂直距离向量计算(不只是模长)。先看现有计算模长的代码:

import numpy as np
norm = np.linalg.norm

p1 = np.array([0,0,0])
p2 = np.array([10,0,3])

p3 = np.array([6, -3, 5])

ppDist = np.abs(norm(np.cross(p2-p1, p1-p3)))/norm(p2-p1)
print(ppDist) # 输出:4.28888043816146

要得到垂直距离向量,核心思路是:从直线上一点指向目标点的向量,减去该向量在直线方向向量上的投影向量,剩下的就是垂直距离向量。具体代码实现如下:

import numpy as np
norm = np.linalg.norm

p1 = np.array([0, 0, 0])
p2 = np.array([10, 0, 3])
p3 = np.array([6, -3, 5])

# 直线的方向向量
dir_vec = p2 - p1
# 从p1指向p3的向量
vec_p1p3 = p3 - p1
# 计算向量在方向向量上的投影长度
proj_length = np.dot(vec_p1p3, dir_vec) / norm(dir_vec)
# 得到投影向量
proj_vec = (proj_length / norm(dir_vec)) * dir_vec
# 垂直距离向量 = 原向量 - 投影向量
perp_distance_vec = vec_p1p3 - proj_vec

print(perp_distance_vec)
# 输出:[ 0.88073394  3.         -2.93577982]
print(norm(perp_distance_vec))
# 输出:4.28888043816146

运行后得到的向量模长和之前的结果一致,验证了正确性。

3D空间点到直线垂直距离可视化:
3D空间点到直线垂直距离可视化

内容的提问来源于stack exchange,提问作者beta green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:08:08