已知任意位置的正方形和三角形的頂點坐標 如何計算重疊部分面積?

某平面內,已知任意位置的正方形和三角形的頂點坐標,如何計算重疊部分面積(假設一定重疊)。有沒有什麼簡單快捷高大上的方法?
(我能想到4種情況,但能不能不分類討論就能計算?)


計算非自相交多邊形的重疊面積:
http://www.cap-lore.com/MathPhys/IP/


如果願意的話,可以平移並旋轉坐標系,使正方形兩條鄰邊與坐標軸正半軸重合。然後在二者橫縱坐標公共範圍內求出各邊所在直線的交點,這些交點確定一個凸多邊形,也就是公共部分。分割成多個三角形求和,得到重疊面積。


列出來邊界方程然後積分


先 找到所有交點 以及 各自進入到對方內部的頂點 ,所找到的這些點構成一個凸多邊形,然後求這個凸多邊形面積?

補:
求交點通過枚舉正方形和三角形的邊,邊用端點表示,總共需算4*3次。
求各自頂點是否在對方內部,可以通過算該頂點與對方各頂點(按順/逆時針方向排好序的)每次取相鄰兩個相連構成的三角形面積和是否等於對方面積,是的話則在對方內部。
求凸多邊形面積可以以某一頂點為基準,其餘點按順/逆時針排好序,按照順序每次取倆與基準點構成三角形求面積,和即為凸多邊形面積。
第一次回答問題,求不嘲笑……


找出所有相交點,再使用高斯面積公式:https://en.wikipedia.org/wiki/Shoelace_formula


一個凸多邊形的區域可以看作是逆時針順序每條邊所在直線的左側的半平面的交集,兩個凸多邊形的交集就是這兩個圖形的所有邊的左側的半平面的交集。三角形和正方形都是凸多邊形,所以可以直接採用半平面交演算法。


已知三角形邊f_{p1p2}(x,y),f_{p2p3}(x,y) ,f_{p3p1}(x,y),對於p(x,y)點是其內部或者邊界有
對於p1p2,p與p3同側,對於p2p3,p與p1同側,對於p3p1,p與p2同側:
f_{p1p2}(x,y)*f_{p1p2}(x_{p3} ,y_{p3} )geq 0
f_{p2p3}(x,y)ast f_{p2p3}(x_{p1},  y_{p1} )geq 0
f_{p3p1}(x,y)ast f_{p3p1}(x_{p2},  y_{p2} )geq 0
同理也可知四邊形內部條件。
由頂點得各邊p=p1+alpha( p1p2) left( alpha in [0,1] 
ight) 解方程求出各交點,再分別判定四邊形內部的三角形頂點,和三角形內部的四邊形頂點。這些點就是相交區域頂點然後就可以愉快的求面積了。


知道boundary的話,可以蒙卡抽樣求面積。


按交點坐標分成N個三角形計算面積然後相加如何?


推薦閱讀:

從事數學研究會對人的個性產生哪些影響?可能使人產生哪些狹隘的見解?
試作集合(0,1)與集合[0,1]的一一對應?
數學上能否指出某個公理體系中符合哪些條件的真命題是可以證明的,符合哪些條件的命題是「真而不可證」的?
學習數學到底有什麼用?
複雜的摺紙是純靠手工還是有計算機輔助設計?

TAG:演算法 | 數學 | 幾何學 | 趣味數學 | 數學分析 |