我是想找一个快速的方法,求斜率的先不说,比如按点到直线的距离为0,点到直线的距离好象就有快速算法,比如用点乘什么的,请大家帮忙,谢谢

解决方案 »

  1.   

    把点(x, y)代入直线方程ax + by + c = 0不行吗?
      

  2.   

    #define JSWUCHA 1e-5
    #define LEFT_LINE 1
    #define ON_LINE
    #define RIGHT_LINEtypedef struct tagDoublePoint 
    {
      double x;
      double y;
    }DoublePoint;//判断点p在直线p1->p2的哪一边
    //返回左LEFT_LINE(1),线上ON_LINE(0),右RIGHT_LINE(-1)
    int PreftoL(DoublePoint p, DoublePoint p1, DoublePoint p2)
    {
      DoublePoint v1, v2;
      Double  Z;  //计算矢量v1=p1->p2
      v1.X=p2.X-p1.X;
      v1.Y=p2.Y-p1.Y;  //计算矢量v2=p1->p
      v2.X=p.X-p1.X;
      v2.Y=p.Y-p1.Y;  //计算矢量v1,v2的叉积的Z坐标
      Z=v1.X*v2.Y-v1.Y*v2.X;
      
      //如果Z坐标大于0则在左,小于0则在右,等于0则在线上
      if(Z > JSWUCHA)
        return LEFT_LINE;
      else if(Z < -JSWUCHA)
        return RIGHT_LINE;
      else
        return ON_LINE;
    }