说明
前面我们在求点到平面距离的时候,就可以用距离判断点是否在平面上。但是,也有更简单的方法可以减少计算,来判断点是否在平面上。
几何
与计算距离一样,计算点是否在平面上,也是用点乘来完成的。但是当点在平面上时,向量 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
}