![]() |
Möchte Entfernung von 2 Punkten auf einem Bild berechnen.
Hallo,
Ein Punkt auf einem Bild(TImage) steht schon fest. Wenn man jetzt auf einen Punkt im Bild klickt, soll die Entfernung berechnet werden. Wie könnte man das machen? Danke im Vorraus mfg Mokuba01 PS: Vielleicht ein unsichtbares Dreieck zeichnen und dann die Diagonale berechnen? |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Warum willst du ein unsichtbares Dreieck zeichnen? Nur im Gedanken! Du hast den Ausgangspunkt und im OnClick() die Koordinate des Endpunktes. Dann hilft der Pythagoras und die Entfernung ist berechnet.
|
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Hi!
Deine Idee mit dem Dreieck ist schon genau die richtige! Nur brauchst du es ja nicht wirklich zu zeichnen. Aber mit dem Satz des Pythagoras solltest du hier weiterkommen. Du kennst ja quasi die Eckpunkte eines rechtwinklingen Dreiecks und die Längen der beiden Katheten somit auch. Dann kannst du die gesuchte Länge leicht ermitteln! Wenn es Probleme gibt, wäre es schön, wenn du uns den Quelltext, den du bisher hast zeigen könntest und genau beschreiben könntest, wo es hakt! Ciao, Frederic |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Naja, einfach im onlclick even die maus coordinaten abreifen.
Und an über ![]() MfG - Ghost007 Edit: Redbox :P |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Punkte: A, B
Vektor AB ausrechnen ( B-A ) Länge = |AB| Konkretes Beispiel: Punkt A: x = 10 y = 20 Punkt B: x = 50 y = 30 Vek. AB: B.X-A.X, B.Y-A.Y -> x = 40 y = 10 Pythagoräische Lehrsatz: c² = a² + b² --> c = WurzelAus( a² + b² ) a und b sind die x und y Punkte des Vekotrs Länge = SQRT( Vek.X*Vek.X + Vek.Y*Vek.Y ) |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Auch einen Blick wert wäre die Funktion Hypot aus der Unit math.
|
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Hi,
Delphi-Quellcode:
Leider kommt dort immer null raus. Was mach ich falsch?
private
{ Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; PunktA:TPoint; PunktB:TPoint; PunktC:TPoint; {...} procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Langex,Langey:integer; Lange:Extended; begin Punktb.X:=X; Punktb.Y:=Y; Punktc.X:=Punkta.X; punktc.Y:=Punktb.Y; Langex:=Punkta.X-Punktc.X; Langey:=Punktb.Y-Punktc.Y; if Langex<0 then Langex:=Langex*(1-2); if Langey<0 then Langey:=Langey*(1-2); Lange:=Hypot(Langex,Langey); if Lange<0 then Lange:=Lange*(1-2); application.MessageBox(PChar(FloatToStr(Lange)),'',MB_OK); end; procedure TForm1.FormCreate(Sender: TObject); begin PunktA.X:=15; PunktA.Y:=15; end; mfg Mokuba01 |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
:wall:
Delphi-Quellcode:
So in der Art :stupid:
private
{ Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; PunktA:TPoint; {...} procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var DeltaX, DeltaY, Laenge: real; begin DeltaX = PunktA.X - X; DeltaY = PunktA.Y - Y; Laenge = Hypot(DeltaX, DeltaY); showmessage(floattostr(laenge)); end; procedure TForm1.FormCreate(Sender: TObject); begin PunktA.X:=15; PunktA.Y:=15; end; |
Re: Möchte Entfernung von 2 Punkten auf einem Bild berechnen
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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