计算几何相关

来源:互联网 发布:简谱五线谱转换软件 编辑:程序博客网 时间:2024/06/06 00:08

1 基础知识

1.两点间的距离公式:

 已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则P1和P2两点间的距离为

      d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

2.线段的中点坐标公式:

 已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2的中点坐标为(x,y)

      x=(x1+x2)/2    y=(y1+y2)/2 

3.角度与狐度与转换

      的意义 以及一些三角函数。

4.直线的斜率公式:

  已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2所在的直线的斜率为

     k=(y2-y1)/(x2-x1)

陲线斜率以其推导

5.直线的点斜式方程:

  已知:直线过点P0(x0,y0),斜率为k,则该直线所在的方程为

y=k(x-x0)+y0=kx+y0-kx0=kx+b(与y轴交点的纵坐标:纵截距)

已知两点求直线方程、已知一点余率救直线方程,已知余率以与Y轴次点求余线方程。

  

2.叉积
1.已知:平面上的两点的直角坐标分别为p1(x1,y1),p2(x2,y2)则
 1)该两点相对坐标原点(0,0)的叉积为m=x1*y2-x2*y1
    若m>0 则相对坐标原点,点p1在点p2的顺时针方向
    若m<0 则相对坐标原点,点p1在点p2的逆时针方向
    若m=0 则原点和p1、p2在一条直线上
(2)该两点相对点p0(x0,y0)的叉积为m=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)
    若m>0 则相对p0点,点p1在点p2的顺时针方向
    若m<0 则相对p0点,点p1在点p2的逆时针方向
    若m=0 则p0和p1、p2在一条直线上
2.确定两条连续的有向线段p0p1和p0p2在pl点是向左转还是向右转


  (1)计算叉积m=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)
(2)判断m
     若m>0 则p1点向左拐
     若m<0 则p1点向右拐

     若m=0 则点p0、p1、p2在一条直线上

面积与叉积

平行四边形面积就是叉积的绝对值。

多边形面积:

我们都知道已知A(x1,y1)、B(x2,y2)、C(x3,y3)三点的面积公式为

S(A,B,C) = |y1 y2 y3| * 0.5 =[(x1-x3)*(y2-y3) - (x2-x3)*(y1-y3)]*0.5

   (当三点为逆时针时为正,顺时针则为负的)

对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:

S(A1,A2,A3,、、、,An)

= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))

P是可以取任意的一点,用(0,0)时就是下面的了:

 设点顺序 (x1 y1) (x2 y2)   ... (xn yn)

     =0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+...+xn*y1-yn*x1)

   另:若要判断凹凸多边形只需考虑所有PPi与PPi+1叉积(1<=i<=n-2)是否同号.  
是则凸,否则凹. 

3.判断点是否在线段上:

  设点为Q,线段为P1P2 ,判断点Q在该线段上的依据是:( Q - P1 ) × ( P2 - P1 ) = 0 且 Q 在以 P1,P2为对角顶点的矩形内。前者保证Q点在直线P1P2上,后者是保证Q点不在线段P1P2的延长线或反向延长线上,对于这一步骤的判断可以用以下过程实现:

  ON-SEGMENT(pi,pj,pk)

  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)两个条件必须同时满足才能返回真值。


1 0
原创粉丝点击