天天看點

最快速的方法計算出下面這個圓形是否和正方形相交

用最簡單, 最快速的方法計算出下面這個圓形是否和正方形相交。"  

3D坐标系 原點(0.0,0.0,0.0)

圓形:

半徑r = 3.0

圓心o = (*.*, 0.0, *.*)

正方形:

4個角坐标;  

1:(*.*, 0.0, *.*)

2:(*.*, 0.0, *.*)

3:(*.*, 0.0, *.*)

4:(*.*, 0.0, *.*)

計算正方形四個頂點和圓的關系,分3鐘情況: 

1.圓内圓外都有頂點,相交 

2.4個都在圓内,不相交 

3.4個都在圓外,計算正方形每條邊的 線段 與圓心到每條邊的垂線交點(交點必須在邊的線段上),如果有一個交點在圓内,相交。 否則,不相交。

假設圓心為O,正方形四個頂點是ABCD,分别計算OA,OB,OC,OD

令min_d = min(OA,OB,OC,OD)

  max_d = max(OA,OB,OC,OD)

如果 min_d <= r <= max_d ,則相交

如果 max_d < r ,則在圓内,不相交

如果 max_d > r  && min_d > r,   則計算O到四條邊的距離并取最小的即為minEdgeDistance,如果minEdgeDistance<=r,則相交