Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
2. Jul 2006, 17:09
es schien zu klappen doch irgenwie brecht er die forschleife bzw. die funktion vorzeitig ab und ich weiß nicht warum:
Delphi-Quellcode:
function GetDir1(ObjIndex:Integer):TPointExt;
var
i:integer;
sm,sm1:TPointExt;
s1,s2:TPointExt;
m,s:Extended;
e,o1:TPointExt;
begin
with TFigure(obj.Items[ObjIndex]).Style do begin
S1.X:=(LastPos.X-FirstPos.X) / 2;
S1.Y:=(LastPos.Y-FirstPos.Y) / 2;
sm.x:=FirstPos.X + s1.x;
sm.y:=FirstPos.y + s1.y;
end;
// und von einenm anderen objekt
for i:=0 to obj.count-1 do begin
if (i <> ObjIndex) then begin
with TFigure(obj.Items[i]).Style do begin
S2.X:=(LastPos.X-FirstPos.X) / 2;
S2.Y:=(LastPos.Y-FirstPos.Y) / 2;
sm1.x:=FirstPos.X + s2.X;
sm1.y:=FirstPos.y + S2.y;
if Sm.x > sm1.x then begin
m:=(sm.X)-sm1.X;
s:=S1.X+s2.X;
end
else begin
m:=(sm1.X)-sm.X;
s:=S2.X+s1.X;
end;
e.x:=m-s;
if Sm.y > sm1.y then begin
m:=(sm.y)-sm1.y;
s:=S1.y+s2.y;
end
else begin
m:=(sm1.y)-sm.y;
s:=S2.y+s1.y;
end;
e.y:=m-s;
end;
if (o1.x >e.x ) and (o1.y>e.y) then begin
o1.x:=e.x;
o1.y:=e.y;
result:=o1;
end;
end; // With
end;
end;
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|