如何计算由点和多边形定义的立体角?
How to calculate a solid angle defined by a point and a polygon?
让我们定义一个坐标 Xo, Yo, Zo
的点 O
和一个坐标 (Xa,Ya,Za), (Xb,Yb,Zb), (Xc,Yc,Zc), (Xd,Yd,Z)
的多边形 ABCD
计算多面体 ABCDO
定义的立体角 Ω
的最常用算法是什么?
谢谢
比较简单的方法就是把这个金字塔分成两个四面体(比如用普通对角线AC,如果ABCD
是凸的),然后计算每个四面体的立体角
Ω = 2 * ArcTan(Dot(u1 X u2, u3) /(1 + Dot(u2,u3) + Dot(u1,u2) + Dot(u1,u3)))
其中 u1, u2, u3
- 从 O
到 A, B, C
点的归一化(单位)向量(对于第一个四面体)
在 Wiki
中查看此方法可能存在的问题
让我们定义一个坐标 Xo, Yo, Zo
的点 O
和一个坐标 (Xa,Ya,Za), (Xb,Yb,Zb), (Xc,Yc,Zc), (Xd,Yd,Z)
ABCD
计算多面体 ABCDO
定义的立体角 Ω
的最常用算法是什么?
谢谢
比较简单的方法就是把这个金字塔分成两个四面体(比如用普通对角线AC,如果ABCD
是凸的),然后计算每个四面体的立体角
Ω = 2 * ArcTan(Dot(u1 X u2, u3) /(1 + Dot(u2,u3) + Dot(u1,u2) + Dot(u1,u3)))
其中 u1, u2, u3
- 从 O
到 A, B, C
点的归一化(单位)向量(对于第一个四面体)
在 Wiki
中查看此方法可能存在的问题