![]() |
2 Objekte entfernung berechnen mit dem Mittelpunkt
Hallo,
ich möchte gerne von zwei objekten die entfernung berechnen, das habe ich mir so vorgestellt: 1. ich berechne den mittelpunkt von den zwei objekten:
Delphi-Quellcode:
das problem ist jetzt: ich möchte die entfernung haben vom zuletzt makierten objekt und zu den andren objekt und zwar von beiden ränder aus... ich dachte das könnte ich irgenwie über die winkel machen nur ich weiß leider nicht genau wie.
// Vom zuletzt makierten objekt
sm.x:=TFigure(obj.Items[selobj]).Style.LastPos.X div 2; sm.y:=TFigure(obj.Items[selobj]).Style.LastPos.y div 2; // und von einenm anderen objekt for i:=0 to obj.count-1 do begin if (TFigure(obj.Items[i]).Style.isSel = True) and (i <> SelObj) then begin sm1.x:=TFigure(obj.Items[i]).Style.LastPos.X div 2; sm1.y:=TFigure(obj.Items[i]).Style.LastPos.y div 2; end; end; Lastpos ist der rechte rand vom objekt Könnte mir da jemmand etwas Helfen ? vielen dank im vorraus. |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Wenn mich nicht alles täuscht müsste das doch über den Satz des Pythagoras (schreibt man den so?) zu lösen sein.
Code:
MFG
dif.x = sm.x - sm1.x
dif.y = sm.y - sm1.y Entfernung = Wurzel(dif.x² + dif.y²) Maximus |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Den Abstand der Mittelpunkte zu berechnen ist kein Problem, einfach x1-x2 und y1-y2 und dann Pythagoras.
//Edit: So, wie es Maximus macht. ;) Um aber vom Rand aus zugehen muss man wissen, welche Form die Objekte haben. |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Vielen Dank für die schnelle antwort, jedoch hat es nicht funktioniert, weil die werte waren immer zu klein:
Delphi-Quellcode:
Bei den Objekten haldelt es sich um Vieecke
var
i:integer; sm,sm1,diff:TPoint; m1,m2:Extended; begin sm.x:=TFigure(obj.Items[selobj]).Style.LastPos.X div 2; sm.y:=TFigure(obj.Items[selobj]).Style.LastPos.y div 2; // und von einenm anderen objekt for i:=0 to obj.count-1 do begin if (TFigure(obj.Items[i]).Style.isSel = True) and (i <> SelObj) then begin sm1.x:=TFigure(obj.Items[i]).Style.LastPos.X div 2; sm1.y:=TFigure(obj.Items[i]).Style.LastPos.y div 2; diff.X:=sm1.x-sm.x; diff.y:=sm1.y-sm.y; m1:=Sqrt(diff.x*2) + (diff.y*2); end; end; Label2.Caption:=FloatToStr(m1); |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Delphi-Quellcode:
ist nicht äquivalent zu
m1:=Sqrt(diff.x*2) + (diff.y*2);
Delphi-Quellcode:
:P
m1:=Sqrt(diff.x*diff.x) + (diff.y*diff.y);
|
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Delphi-Quellcode:
was hat den die kleine zwei zu bedeuten ?
Entfernung = Wurzel(dif.x² + dif.y²)
ich dachte einfach mal 2 nehmen oder nicht ? |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Zitat:
Delphi-Quellcode:
oder gleich
m1 := Sqrt(diff.x * diff.x + diff.y * diff.y);
Delphi-Quellcode:
heißen muss.
m1 := Sqrt(Sqr(diff.x) + Sqr(diff.y));
Zitat:
![]() |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
entwerde verstehe ich das ergbnis nicht oder die formel funtkioniert noch nicht:
die werte sind viel zu hoch jetzt. ich habe das jetzt so:
Delphi-Quellcode:
for i:=0 to obj.count-1 do begin
if (TFigure(obj.Items[i]).Style.isSel = True) and (i <> SelObj) then begin sm1.x:=TFigure(obj.Items[i]).Style.LastPos.X div 2; sm1.y:=TFigure(obj.Items[i]).Style.LastPos.y div 2; diff.X:=sm1.x-sm.x; diff.y:=sm1.y-sm.y; m1 := Sqrt(Sqr(diff.x) + Sqr(diff.y)); end; end; |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
Hi,
der Satz den du hier siehst, der bezieht sich einfach nur auf ein rechtwinkliges Dreieck. Mal dir einfach ein Koordinatensystem auf, zeichne dort zwei Objekte ein (mit Koordinaten). Nun wählst du die Punkte, deren Abstand zueinander du möchtest. Du zeichnest jetzt einmal die X Differenz der Punkte als Gerade parallel zu der X-Achse und die Y Differenz parallel zur Y Achse. Das ist dein rechter Winkel. Jetzt verbindest du noch die beiden Punkte direkt und du hast ein Dreieck. Für dieses Dreieck gilt nun (sagt der Satz): Die Summe der Kathetenquadrate (das sind die beiden Linien, mit dem rechten Winkel) ist gleich der Summe des Hypothenusenquadrats (die Linie gegenüber dem rechten Winkel oder auch die Linie die die beiden Punkte direkt verbindet). Da du hier die Quadrate betrachtest, aber nur die "länge" der letzten Linie möchtest, ziehst du hier also die Wurzel. Das ist genau das, was du berechnest, sqr(diffX) + sqr(diffY) ist gerade die Summe der Kathetenquadrate, sqrt ist dann die Wurzel daraus und damit stimmt auch der Wert. Gruß Der Unwissende |
Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt
und wie kann ich es umstellen auf ein viereck ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz