點(x0,y0)到直線Ax+By+C=0的距離公式:
|Ax0+By0+C|/(A^2+B^2)^0.5
夾角
cos<a|,b|>=(a|.*b|)/(|a||*|b||)=(a1b1+a2b2+a3b3)/((a1^2+a2^2+a3^2)^0.5*(b1^2+b2^2+b3^2)^0.5)
判斷點在直線的一側
方法1:
http://zhidao.baidu.com/question/47341112.html
已知P(0,0),Q(3,2)兩點,試判斷P,Q是否在直線2x+3y=4的同一側。
解:直線2x+3y=4
即直線2x+3y-4=0
把P、Q代入2x+3y-4得到
2*0+3*0-4=-4<0
2*3+3*2-4=8
所以在兩側!
判斷點是否在直線段上?
點到2個端點的距離和=?線段的長度+誤差
方法2:
http://www.cnblogs.com/carekee/articles/1877575.html
怎么判斷坐標為(xp,yp)的點P是在直線的哪一側呢?
設直線是由其上兩點(x1,y1),(x2,y2)確定的,直線方向是由(x1,y1)到(x2,y2)的方向。
假設直線方程為:Ax+By+C=0,則有:
A=y2-y1; B=x1-x2; C=x2*y1-x1*y2;
這時可以通過計算D,來判斷點P是在直線的哪一側:
D=A*xp+B*yp+C
若D<0,則點P在直線的左側;若D>0,則點P在直線的右側;若D=0,則點P在直線上。
注:這里的直線是有方向性的!
方法3:利用矢量計算快速判定一點在直線的哪一側
http://www.cnblogs.com/vilyLei/articles/1567852.html
例如矢量A×矢量B=矢量C
設想矢量A沿小於180度的角度轉向矢量B
將右手的四指指向矢量A的方向,右手的四指彎曲代表上述旋轉方向,則伸直的拇指指向它們的叉乘得到的矢量C
如果矢量C的方向相同,則在同側;否則在兩側。
注:叉乘計算公式!
http://hi.baidu.com/foreshore/blog/item/693bce3d9b8cf2c19f3d6218.html
若將向量用坐標表示(三維向量),向量a=(x1,y1,z1),向量b=(x2,y2,z2),則:
點乘,也叫向量的內積、數量積。
向量a·向量b = |a||b|cos<a,b>; 向量a·向量b = x1x2 + y1y2 + z1z2
叉乘,也叫向量的外積、向量積。
|向量c| = |向量a×向量b| = |a||b|sin<a,b>
向量c的方向與a,b所在的平面垂直,且方向要用“右手法則”判斷
(用右手的四指先表示向量a的方向,然后手指朝着手心的方向<180擺動到向量b的方向,大拇指所指的方向就是向量c的方向);
向量a×向量b = | i j k |
|x1 y1 z1|
|x2 y2 z2|
= (y1z2-y2z1, x2z1-x1z2, x1y2-x2y1)
(i、j、k分別為空間中相互垂直的三條坐標軸的單位向量)
向量的外積不遵守乘法交換率
向量a×向量b = -向量b×向量a
判斷點是否在矩形、多邊形中
http://blog.csdn.net/qiulei563/article/details/4869692
http://mniwjb.blog.sohu.com/58905924.html
http://dev.gameres.com/Program/Abstract/Geometry.htm
方法1:
只要判斷該點的橫坐標和縱坐標是否夾在矩形的左右邊和上下邊之間。
例如:矩形四個頂點P1,P2,P3,P4,判斷P是否包含在矩形中,
只需要判斷:|P2P|×|P2P1|*|P3P|×|P3P4|<=0 and |P1P|×|P1P4|*|P2P|×|P2P3|<=0
方法2:采用點是否包含在多邊形中判斷
以該點為頂點,做一條射線,使得矩形四個頂點中任意一點都不在射線上。
若該射線與矩形有且僅有一個交點,則在矩形內;若有零個或兩個焦點,則在矩形外。
至於射線,可以通過選擇肯定在矩形外的一點和已知點練成線段來構成。
只要點坐標不在矩形的left~right,bottom~top范圍內即可。