叉乘(二)——點(diǎn)在線段上嗎?
用途2:
其實(shí)這個(gè)還是用的叉乘的性質(zhì),“左邊還是右邊”,只不過(guò)這個(gè)在線上,
也就是說(shuō)是性質(zhì)的第三條。
設(shè)點(diǎn)為Q,線段為P1、P2 ,
判斷點(diǎn)Q在該線段上的依據(jù)是:
1.( Q - P1 ) × ( P2 - P1 ) = 0;
2.Q 在以 P1,P2為對(duì)角頂點(diǎn)的矩形內(nèi)
第一點(diǎn)是為了保證Q點(diǎn)在直線P1P2上,
第二點(diǎn)是為了保證Q點(diǎn)不在線段P1P2的延長(zhǎng)線或反向延長(zhǎng)線上
對(duì)于第二點(diǎn)這一步驟的判斷可以用以下過(guò)程實(shí)現(xiàn):
ON-SEGMENT(pi,pj,pk) //pk就是要判斷的點(diǎn)了,pi,pj就是線段的兩個(gè)端點(diǎn)。
if min(xi,xj) <= xk <= max(xi,xj) and min(yi,yj) <= yk <= max(yi,yj)
then return true;
else return false;
特別要注意的是,由于需要考慮水平線段和垂直線段兩種特殊情況,
min(xi,xj)<=xk<=max(xi,xj) 和 min(yi,yj)<=yk<=max(yi,yj)
兩個(gè)條件必須同時(shí)滿足才能返回真值。
posted on 2011-10-27 23:49 More study needed. 閱讀(434) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)