如何判断一点是否在一线上,及一线是否在与Rect相交(100分)

  • 主题发起人 主题发起人 gyang
  • 开始时间 开始时间
G

gyang

Unregistered / Unconfirmed
GUEST, unregistred user!
1。如何判断一点 (TPoint) 是否在一线 (斜线) 上
2。如何判断一线 (斜线) 是否与一TRect相交
 
请给例子
 
1.线(x1,y1)-(x2,y2) 点pt :TPoint;
if (pt.Y-y1)*(pt.X-x2)-(pt.Y-y2)*(pt.X-x1)=0 then //点在线上

 
procedure TForm1.Button1Click(Sender: TObject);
var
Rect :TRect; //你的TRect
pt1, pt2, pt :TPoint; //pt1,pt2 你的线
i:integer;
begin
for i:=pt1.X to pt2.X do
begin
pt.X :=i;
pt.Y :=Trunc(((pt1.Y-pt2.Y)*pt1.X+pt2.X*pt1.Y+pt1.X*pt2.Y) div (pt1.X-pt2.X));
if not PtInRect(Rect, pt1)* PtInRect(Rect, pt) then
begin
//线 (斜线) 是与一TRect相交
end;
end;
end;
 
接受答案了.
 
后退
顶部