计算几何相关

    xiaoxiao2021-03-25  94

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

    转载请注明原文地址: https://ju.6miu.com/read-15008.html

    最新回复(0)