Line intersect Plane 線與平面相交
在 Revit API 中 Face 類別 (Class) 有提供 public SetComparisonResult Intersect(Curve curve)方法 (Methods),檢測兩者是否有交點,但 Plane 類別沒有提供任何檢測是否與線段交錯的方法。 N 為平面法向量 P3 為平面上的點 P1、P2 為線段上的點 P 線段與平面的交點 公式(1) N dot (P - P3) = 0 平面法向量在平面上的投影,即兩者向量的內積,因互相垂直,值等於 0。 公式(2) P = P1 + u(P2 - P1) 線的方程式,P 點為一條通過 P1、P2 點直線上的一點。 將公式(2)帶入公式(1) N dot ((P1 + u(P2 - P1)) - P3) = 0 (N dot (P1 + u(P2 - P1)) - (N dot P3) = 0 N dot (P1 + u(P2 - P1) = N dot P3 (N dot P1) + (N dot (u(P2 - P1)) = N dot P3 N dot u(P2 - P1) = N dot P3 - N dot P1 N dot u(P2 - P1) = N dot (P3 - P1) u = N dot (P3 - P1) / N dot (P2 - P1) 當 N dot (P2 - P1) = 0 時,表示線段與平面平行(與法向量垂直),沒有交點或位於平面中。 將 u 帶入公式(2) 求出 P 點