AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi 2 Objekte entfernung berechnen mit dem Mittelpunkt
Thema durchsuchen
Ansicht
Themen-Optionen

2 Objekte entfernung berechnen mit dem Mittelpunkt

Ein Thema von mimi · begonnen am 2. Jul 2006 · letzter Beitrag vom 2. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
mimi

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

2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:13
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:
// 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;
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.
Lastpos ist der rechte rand vom objekt

Könnte mir da jemmand etwas Helfen ? vielen dank im vorraus.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Maximus

Registriert seit: 26. Okt 2003
169 Beiträge
 
#2

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:16
Wenn mich nicht alles täuscht müsste das doch über den Satz des Pythagoras (schreibt man den so?) zu lösen sein.

Code:
dif.x = sm.x - sm1.x
dif.y = sm.y - sm1.y

Entfernung = Wurzel(dif.x² + dif.y²)
MFG
Maximus
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#3

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:20
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.
  Mit Zitat antworten Zitat
mimi

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

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:39
Vielen Dank für die schnelle antwort, jedoch hat es nicht funktioniert, weil die werte waren immer zu klein:
Delphi-Quellcode:
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);
Bei den Objekten haldelt es sich um Vieecke
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#5

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:44
m1:=Sqrt(diff.x*2) + (diff.y*2); ist nicht äquivalent zu

m1:=Sqrt(diff.x*diff.x) + (diff.y*diff.y);
  Mit Zitat antworten Zitat
mimi

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

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:52
Entfernung = Wurzel(dif.x² + dif.y²) was hat den die kleine zwei zu bedeuten ?

ich dachte einfach mal 2 nehmen oder nicht ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 10:56
Zitat von TheAn00bis:
m1:=Sqrt(diff.x*2) + (diff.y*2); ist nicht äquivalent zu

m1:=Sqrt(diff.x*diff.x) + (diff.y*diff.y);
Und auch das ist Quatsch, da es natürlich
m1 := Sqrt(diff.x * diff.x + diff.y * diff.y); oder gleich
m1 := Sqrt(Sqr(diff.x) + Sqr(diff.y)); heißen muss.

Zitat von mimi:
was hat den die kleine zwei zu bedeuten ?

ich dachte einfach mal 2 nehmen oder nicht ?
Öhm - nicht ganz. Ein hochgestellter Term ist das Zeichen für Potenzieren, in diesem Falle der Spezialfall Quadrierung.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
mimi

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

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 11:07
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;
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 11:23
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
  Mit Zitat antworten Zitat
mimi

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

Re: 2 Objekte entfernung berechnen mit dem Mittelpunkt

  Alt 2. Jul 2006, 11:26
und wie kann ich es umstellen auf ein viereck ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz