二維計算幾何入門(點,直線)及簡單練習
精度問題:定義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分別作叉積,發現結果的正負性不同,故相交。