S01E06:点是否在平面上

1,056 阅读1分钟

说明

前面我们在求点到平面距离的时候,就可以用距离判断点是否在平面上。但是,也有更简单的方法可以减少计算,来判断点是否在平面上。

几何

与计算距离一样,计算点是否在平面上,也是用点乘来完成的。但是当点在平面上时,向量 AB 与 AC 的夹角是 90 度,也就是点积是 0. 这意味着:简单考虑,AB 向量的归一化也是不必要的,可以少一步计算。当然,对于有些平面,在定义是法线就是归一化的,这样在计算时,两者是一样的。

代码

static func isPointOnPlane(point:simd_float3, plane:Plane) -> Bool {
    let vector = point - plane.position
    let dotValue = dot(vector, plane.normal) // 直接求点积,无需归一化
    return dotValue < Float.leastNonzeroMagnitude
}