Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 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)
  Mit Zitat antworten Zitat