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 點


留言

AONE寫道…
作者已經移除這則留言。

這個網誌中的熱門文章

Revit 的家用冷水熱水流量計算