S01E11:平面与平面是否平行/共面

301 阅读1分钟

说明

有时我们需要判断两个平面是否平行,可能大家立刻就想到了平面的定义:法线的方向就决定了平面的朝向,当法线平行时,平面也是平行的。

几何

所以,判断平面是否平行的方法,与判断直线平行是一样的。利用叉乘就能解决。

共面问题也是一样的。先判断平行,再判断平面 1 上的任意一点是否在平面 2 上,或者说距离是否是 0。

代码

static func isParallel(line1:Line, line2:Line) -> Bool {
    let crossValue = cross(line1.direction, line2.direction)
    if length_squared(crossValue) < 0.0001 {
        return true
    }
    return false
}
static func isSame(line1:Line, line2:Line) -> Bool {
    if !isParallel(line1: line1, line2: line2) {
        return false
    }
    let vector = line1.position - line2.position
    let crossValue = cross(vector, line1.direction)
    if length_squared(crossValue) < 0.0001 {
        return true
    }
    return false
}