計算幾何求公式

2021-06-08 05:32:36 字數 1922 閱讀 2850

例題1:poj 1380(矩陣的包含),給你兩個矩陣的長和寬,問前面這個矩陣能否包含後面這個矩陣。

(1)、當前面的矩陣的寬《小於後面這個矩陣的寬時,不能包含。

(2)、當前面矩陣的面積<=後面矩陣的面積,不能包含。

(3)、當前面矩陣的長,寬》後矩陣的長,寬,能夠包含。

(4)、特別注意前矩陣寬》後矩陣的寬,但是長《後矩陣的長。如圖,可能會包含。

判斷只需要後面這個矩陣在水平方向上的投影之和<=前面這個矩陣的長。sin∠1=b/sqrt(c*c+d*d),∠1和∠2之間的那個角的正弦值=d/sqrt(c*c+d*d),水平方向的投影和為:

c*cos∠2+d*sin∠2,自己認真看看,具體見**。

#include#include#includeusing namespace std;

int main()

}return 0;

}

例題2:湖南省第六屆程式設計競賽第四題:描述

在平面直角座標系下,撞球桌是乙個左下角在(0,0),右上角在(l,w)的矩形。有乙個球心在(x,y),半徑為r的圓形母球放在撞球桌上(整個球都在撞球桌內)。受撞擊後,球沿極角為a的射線(即:x正半軸逆時針旋轉到此射線的角度為a)飛出,每次碰到球桌時均發生完全彈性碰撞(球的速率不變,反射角等於入射角)。

如果球的速率為v,s個時間單位之後球心在什麼地方?輸入

輸入檔案最多包含25組測試資料,每個資料僅一行,包含8個正整數l,w,x,y,r,a,v,s(100<=l,w

<=105, 1<=r

<=5,r

<=x

<=l-r, r

<=y

<=w-r, 0<=a

<360, 1<=v,s

<=105),含義見題目描述。l=w=x=y=r=a=v=s=0表示輸入結束,你的程式不應當處理這一行。輸出

對於每組資料,輸出僅一行,包含兩個實數x, y,表明球心座標為(x,y)。x和y應四捨五入保留兩位小數。

樣例輸入

100 100 80 10 5 90 2 23

110 100 70 10 5 180 1 9999

0 0 0 0 0 0 0 0

樣例輸出

80.00 56.00

71.00 10.00

分析:將速度方向分解為水平方向的v1=vcosa,和垂直方向的v2=vsina。由於是完全彈性碰撞,所以在每個方向的速度大小不變,做勻速直線運動。可以求出每個方向的總長度。

假設經過單位時間s後水平方向的位置變為len1,如果超過x=l-r,這個時候我們應該將這點轉移到桌子內部,直接將超出的部分以x=l-r為對稱軸求出對稱點即可。這個時候位置變為:2(l-r)-len1。反之要是len1

垂直方向的分析一樣,具體見**:

#include#include#includeusing namespace std;

#define pi acos(-1.0)

struct point

bool operator==(const int &n) const

};int main()

while(len2<=r||len2>=w-r)

cout.precision(2);

cout<

計算幾何公式總結

一.注意 1.注意捨入方式 0.5的捨入方向 防止輸出 0.2.幾何題注意多測試不對稱資料.3.整數幾何注意xmult和dmult是否會出界 符點幾何注意eps的使用.4.避免使用斜率 注意除數是否會為0.5.公式一定要化簡後再代入.6.判斷同乙個2 pi域內 兩角度差應該是 abs a1 a2 p...

計算幾何公式 定理

1.餘弦定理 cos a b c a 2bc 2.海 式 假設在平面內,有乙個三角形,邊長分別為a b c,三角形的面積s可由以下公式求得 s sqrt s1 s1 a s1 b s1 c 其中s1表示的是三角形的周長的一半。3.已知三邊和內切圓或外切圓求面積 s abc 4r 其中r是三角形外接圓...

計算幾何公式集錦

1 計算多邊形重心方法 1 劃分多邊形為三角形 以多邊形的乙個頂點v為源點 v可取輸入的第乙個頂點 作鏈結v與所有非相鄰頂點的線段,即將原n邊形或分為 n 2 個三角形 2 求每個三角形的重心和面積 設某個三角形的重心為g cx,cy 頂點座標分別為a1 x1,y1 a2 x2,y2 a3 x3,y...