问题1:如何得到2个点之间直线上的所有点???
问题2: 另外一个问题就是这条直线的长度假设: a(3,5)  b(14,25) 这两点连成一条直线,用什么公式能得到这条直线上所有的点的坐标??请给出示例代码,另外这条直线的长度如何求出,也请给出代码示例,谢谢。

解决方案 »

  1.   

    如何得到2个点之间直线上的所有点???
       直线上的点是无穷多的,看看高数前一几章就明白了,只要给定X坐标就有一个Y与之对应。
       把两点直线用  Y=kX+B 表示,带入X就有Y了。(高中解析几何)另外一个问题就是这条直线的长度
       A方+B方=C方,就是这么简单。
      

  2.   

    直线有无穷个点!第一问不知道怎么做,即使是线段也是无穷个点长度么,直线没有长度,无穷长
    线段长度
    sqrt((x1-x2)^2+(y1-y2)^2)
      

  3.   

    直线有无穷个点!第一问不知道怎么做,即使是线段也是无穷个点长度么,直线没有长度,无穷长
    线段长度
    sqrt((x1-x2)^2+(y1-y2)^2)
      

  4.   

    数学问题就数学思维回答:
    问题1:如何得到2个点之间直线上的所有点???answer:两点之间的叫线段,不叫直线。(概念不清)线段上的点是有无数多个,你要把坐标精确到小数点后第几位方可得到。
    问题2: 另外一个问题就是这条直线的长度???answer:直线是无穷长,没有长度,线段有长度,计算公式:两点坐标分别为:A(x1,y1),B(x2,y2),AB=sqrt((x1-x2)^2+(y1-y2)^2)
      

  5.   

    private
        { Private declarations }
        procedure DrawLine(sPoint,ePoint: TPoint; var Len: Double);
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      Points: array of TPoint;implementation{$R *.dfm}procedure TForm1.DrawLine(sPoint,ePoint: TPoint; var Len: Double);
    var
      dc: HDC;
      oPoint:TPoint;
      i,nPoint: Integer;
    begin
      
      //画出直线
      dc := Image1.Canvas.Handle;             //获取 image 画布句柄
      MoveToEx(dc,sPoint.X,sPoint.Y,@oPoint); //移动画笔到起点
      LineTo(dc,ePoint.X,ePoint.Y);           //画线
      MoveToEx(dc,oPoint.X,oPoint.Y,@oPoint); //恢复画笔到原点
      Len := Hypot(abs(ePoint.X-sPoint.X),abs(ePoint.Y-sPoint.Y));  //求斜边  if sPoint.X>ePoint.X then
      begin
        oPoint := ePoint;
        ePoint := sPoint;
        sPoint := oPoint;
      end;
      nPoint := ePoint.X-sPoint.X;
      if nPoint=0 then nPoint := abs(ePoint.Y-sPoint.Y);  SetLength(Points,nPoint+1);
      for i:=0 to nPoint do
      begin
        if ePoint.X = sPoint.X then
        begin
          Points[i].X := ePoint.X;
          Points[i].Y := sPoint.Y+i;
        end
        else begin
          Points[i].X := sPoint.X+i;
          Points[i].Y := sPoint.Y+Round((ePoint.Y-sPoint.Y)*Points[i].X / (ePoint.X-sPoint.X));
        end;
      end;end;procedure TForm1.Button1Click(Sender: TObject);
    var
      Len: Double;
    begin  DrawLine(Point(3,5),Point(14,25),Len);end;//可能还有些考虑不周到的地方,代码只供参考