1. 程式人生 > >二維計算幾何入門(點,直線)及簡單練習

二維計算幾何入門(點,直線)及簡單練習

精度問題:定義eps

比較浮點數大小時需要引入極小值eps,具體多小由題目要求定

例如:當eps=0時,0與0.1相等 0與0.9相等

向量:既有方向又有大小的量

向量的夾角:用<a,b>表示向量a和向量b的夾角

表示:

1. 點(point) 用(x,y)表示

2.線段:可以用一個點+一個向量表示,這樣便於計算

3.直線:常用直線上的兩個點表示(兩點確定一條直線)這樣比較常用且簡便

一些定義:

1.投影:

加黑部分為b在向量a方向上的投影

2.模

表示:向量a的模為|a|

如圖,加黑部分為向量a的模,即OA的長度。

向量的運算:

1.加法   

表示:a(x1,y1) b(x2,y2)  a+b=(x1+y1,x2+y2)

幾何意義:

將向量a平移至a'    則x1=AB x2=OE  x1+x2=OD     同理y1+y2=CD 則(x1,y1) +(x2,y2)=(x1+y1,x2+y2)

2.減法:與加法成逆運算。

3.點積

表示:a(x1,y1) b(x2,y2) a dot b=x1*x2+y1*y2

或a·b=|a|*|b|*cos<a,b>

幾何意義:表示向量b在向量a方向上的投影乘以向量a的模。

4.叉積a(x1,y1) b(x2,y2) a dot b=x1*y2+y1*x2

或|a×b|=|a|·|b|·sin<a,b>

幾何意義:兩個向量的叉積等於以這兩個向量為鄰邊的平行四邊形的面積。

練習一:求一個點繞原點旋轉x度的座標

可以用向量的旋轉解決:向量a(x,y)繞原點旋轉c度,得到向量a'的座標為(x·cosc-y·sinc,x·sinc+y·cosc)。

練習二:判斷一個點與一條直線的關係:點在直線上方/上/下方

取直線上兩點A,B,連線A與已知點C,將向量AB與向量AC作叉積,判斷結果的正負從而判斷點與直線的關係。

練習三:求兩條直線的交點座標

用叉積算出s1,s2,再用相似得出比例式P=A+向量AB×s1/s1+s2。

練習四:求兩條線段的關係:(相交or不相交)

有向量AB,AC,AD,AE,AF,AG,AH,EF,EA,EB,GA,GB,GH

將AB與AC,AD分別作叉積,發現結果的正負性相同,所以C,D在AB同側,故不相交。

將AB與AE,AF分別作叉積,發現結果的正負性不同,所以E,F在AB異側,再將EF與EA,EB分別作叉積,發現結果的正負性相同,故不相交。

將AB與AG,AH分別作叉積,發現結果的正負性不同,所以G,H在AB異側,再將GH與GA,GB分別作叉積,發現結果的正負性不同,故相交。