问题1:如何得到2个点之间直线上的所有点???
问题2: 另外一个问题就是这条直线的长度假设: a(3,5) b(14,25) 这两点连成一条直线,用什么公式能得到这条直线上所有的点的坐标??请给出示例代码,另外这条直线的长度如何求出,也请给出代码示例,谢谢。
问题2: 另外一个问题就是这条直线的长度假设: a(3,5) b(14,25) 这两点连成一条直线,用什么公式能得到这条直线上所有的点的坐标??请给出示例代码,另外这条直线的长度如何求出,也请给出代码示例,谢谢。
直线上的点是无穷多的,看看高数前一几章就明白了,只要给定X坐标就有一个Y与之对应。
把两点直线用 Y=kX+B 表示,带入X就有Y了。(高中解析几何)另外一个问题就是这条直线的长度
A方+B方=C方,就是这么简单。
线段长度
sqrt((x1-x2)^2+(y1-y2)^2)
线段长度
sqrt((x1-x2)^2+(y1-y2)^2)
问题1:如何得到2个点之间直线上的所有点???answer:两点之间的叫线段,不叫直线。(概念不清)线段上的点是有无数多个,你要把坐标精确到小数点后第几位方可得到。
问题2: 另外一个问题就是这条直线的长度???answer:直线是无穷长,没有长度,线段有长度,计算公式:两点坐标分别为:A(x1,y1),B(x2,y2),AB=sqrt((x1-x2)^2+(y1-y2)^2)
{ 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;//可能还有些考虑不周到的地方,代码只供参考