判断一点在一条直线上的方程.如下:k:=(y2-y1)/(x2-x1)
y=kx+b请问:各位大侠
判断一点在一条直线只有这种唯一算法,没有别的解法吧?
Option   Explicit   
    
  Private   Sub   Form_Load()   
          Text1.Text   =   100   
          Text2.Text   =   100   
  End   Sub   
    
  Private   Sub   Command1_Click()   
  '假直线的两个坐标是(X1,   Y1),   (X2,   Y2),如何判断(X3,   Y3)在直线上。   
  Dim   X1   As   Single,   Y1   As   Single,   X2   As   Single,   Y2   As   Single   
  Dim   X3   As   Single,   Y3   As   Single   
  X1   =   2000   
  Y1   =   2000   
  X2   =   4000   
  Y2   =   4000   
  X3   =   Val(Text1.Text)   
  Y3   =   Val(Text2.Text)   
    
  If   (X1   =   X2   And   X2   =   X3)   Or   (Y1   =   Y2   And   Y2   =   Y3)   Then   
          Line   (X1,   Y1)-(X2,   Y2)   
          Line   -(X3,   Y3)   
  ElseIf   Y3   =   (Y2   -   Y1)   /   (X2   -   X1)   *   (X3   -   X1)   +   Y1   Then   
          Line   (X1,   Y1)-(X2,   Y2)   
          Line   -(X3,   Y3)   
  Else   
          Line   (X1,   Y1)-(X2,   Y2)   
          DrawWidth   =   3   
          PSet   (X3,   Y3)   
          DrawWidth   =   1   
          MsgBox   "NO"   
  End   If   
    
  End   Sub   
    
  

解决方案 »

  1.   

    目标需求
    上面议程的直线移动或拉伸后
    (X1,   Y1),   (X2,   Y2)发生变化后
    K值不会发生变化,
    y=kx+b,
    x值如何确定。???
      

  2.   

    http://topic.csdn.net/u/20091105/14/5cff53fb-537b-4748-99e9-10a92d19b4dd.html正在讨论
      

  3.   

    谢谢,回复.这个帖子有中这段内容好好学习一下.
    检查三个点是否在一条直线上或重合
    int
    Is_Three_Point_In_A_Line( double x1, double y1, double x2, double y2, double x3, double y3 )
    {
        double a, b, e;    
        a = ( x1 + x2 ) * ( x1 - x2 ) + ( y1 + y2 ) * ( y1 - y2 );
        b = ( x3 + x2 ) * ( x3 - x2 ) + ( y3 + y2 ) * ( y3 - y2 );
        e = ( x1 - x2 ) * ( y3 - y2 ) - ( x2 - x3 ) * ( y2 - y1 );
        if( equ( e, 0 ) )
        {
            return 1;
        }
        return 0;
    }