三點順序(計算幾何入門)

2021-08-18 09:49:17 字數 1383 閱讀 6528

現在給你不共線的三個點a,b,c的座標,它們一定能組成乙個三角形,現在讓你判斷a,b,c是順時針給出的還是逆時針給出的?

如:圖1:順時針給出

圖2:逆時針給出

每行是一組測試資料,有6個整數x1,y1,x2,y2,x3,y3分別表示a,b,c三個點的橫縱座標。(座標值都在0到10000之間)

輸入0 0 0 0 0 0表示輸入結束

測試資料不超過10000組

如果這三個點是順時針給出的,請輸出1,逆時針給出則輸出0

0 0 1 1 1 3

0 1 1 0 0 0

0 0 0 0 0 0

0

1

題目給出三點座標(x1,y1)(x2,y2),(x3,y3)

給出的是二維座標系上的座標,我們可以將其看成三維空間座標系中xoy平面上的三角形

這樣,座標就是(x1,y1,0)(x2,y2,0),(x3,y3,0)

根據右手定則

如圖  opxof得到的m向量是向上的   而ofxop得到的叉乘結果    z軸方向是向下的

我們可以得到向量ab 和向量ac   ab=(x2-x1,y2-y1,0)  ac=(x3-x1,y3-y1,0)

ab叉乘ac  若叉乘得到的向量z軸座標為負數  則座標是順時針   反之座標是順時針

叉乘:|     i           j      k  |

|x2-x1   y2-y1   0  |

|x3-x1   y3-y1   0  |

得到的向量是

( (y2-y1)*0*i + (x3-x1)*0*j + (x2-x1)(y3-y1)*k - (x3-x1)(y2-y1)*k - (y3-y1)*0*i - (x2-x1)*0*j  )

z軸座標是  (x2-x1)(y3-y1) - (x3-x1)(y2-y1)

則(x2-x1)(y3-y1) - (x3-x1)(y2-y1) 大於0  是順時針  反之逆時針

**:

#includeint main()

double flag;

flag=(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1);

if(flag>0)

else}}

計算幾何初步 三點順序

三點順序 給出不共線的三個點a,b,c的座標,推斷a,b,c是順時針給出的還是逆時針給出的?利用向量叉積推斷是逆時針還是順時針。設向量p x1 y1 q x2 y2 則p,q向量叉積定義為 p q x1 y2 x2 y1,也就是 p q sin a 即p,q張成的平行四邊形的面積。a的取值不同,會帶...

計算幾何(一)三點順序

現有不共線的三點a b c的座標,它們一定能組成乙個三角形,判斷a b c是順時針給出的,還是逆時針給出的。每一行是一組測試資料,有6個整數x1,y1,x2,y2,x3,y3分別表示a b c三點的橫縱座標 座標值都在0到10000之間 輸入000000表示輸入結束,測試資料不超過10000組。三點...

計算幾何初步(面積以及三點順序)

設三角形三點為a x1,y1 b x2,y2 c x3,y3 三邊長為a,b,c,高為h,面積為s,p a b c 2 公式 s a h 2 b h 2 c h 2 s p p a p b p c 0.5 double area double x1,double y1,double x2,doubl...