网站建设开发有什么好处,无锡网站制作楚天软件,北京设计公司有哪些公司,wordpress 整站带数据目录
1. 直线上的最近点
2. 射线上的最近点
3. 点到平面的距离
4. 圆或球上的最近点
5. AABB上的最近点 1. 直线上的最近点 q是距离q的最近点#xff0c;也就是q在直线上的投影。
其中p是直线上的点#xff08;向量表示#xff09;#xff0c;n是直线的法向量#x…目录
1. 直线上的最近点
2. 射线上的最近点
3. 点到平面的距离
4. 圆或球上的最近点
5. AABB上的最近点 1. 直线上的最近点 q是距离q的最近点也就是q在直线上的投影。
其中p是直线上的点向量表示n是直线的法向量单位向量d是直线到原点的距离。
2. 射线上的最近点 其中p_org是起始点d是单位向量t是自变量可以无限大。 1先求自变量t 点乘v·d结果就是t因为v在d方向的投影就是点乘
2带入公式p(t) p_org td即可求得qp_org (d·(q-p_org))d。
3. 点到平面的距离 其中q是平面外的点平面公式是q·nd. p是平面上的点n是法向量。
注意和直线上的最近点公式是一样的。
4. 圆或球上的最近点 已知球心c和半径r求q在球面的投影点q 。d是c-q其中加粗都是向量表示的点坐标。b是q到q.
5. AABB上的最近点
AABBAxis-Aligned Bounding Box轴对齐的包围盒是一个在三维空间中常用于表示物体边界的几何形状通常由两个对角点最小点和最大点定义。要找到空间中的点到AABB上的最近点可以使用以下方法 检查点是否在AABB内部 如果点在AABB内部那么点本身就是AABB上的最近点。 检查点是否在AABB的某个坐标轴上的区间内 对于每个坐标轴x、y、z检查点的坐标是否在AABB的最小坐标和最大坐标之间。如果是那么点在该坐标轴上的投影就是AABB上的最近点。 否则找到点到AABB上的最近点 对于每个坐标轴如果点的坐标小于AABB的最小坐标则将点的坐标设置为AABB的最小坐标如果点的坐标大于AABB的最大坐标则将点的坐标设置为AABB的最大坐标。现在点的坐标就分别被截断到了AABB的各个坐标轴上的区间内这就是AABB上的最近点。
import numpy as npdef closest_point_to_aabb(point, aabb_min, aabb_max):closest_point np.copy(point)for i in range(len(point)):# Check if point coordinate is outside AABBif point[i] aabb_min[i]:closest_point[i] aabb_min[i]elif point[i] aabb_max[i]:closest_point[i] aabb_max[i]return closest_point# 示例用法
point np.array([2, 3, 4]) #
# AABB
aabb_min np.array([0, 0, 0])
aabb_max np.array([5, 5, 5])closest closest_point_to_aabb(point, aabb_min, aabb_max)
print(最近点:, closest)待续。。。 参考35.几何检测_哔哩哔哩_bilibili