Autor |
Beitrag |
Quivadis
      
Beiträge: 314
UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
|
Verfasst: Mo 07.03.05 15:34
Hallo Freunde,
ich habe folgendes Problem:
Ich benötige eine einfache Formel wie man den Abstand von einen Punkt zu einer Strecke/Gerade berrechnet. Von der Strecke habe ich nur den Anfangs und den Endpunkt.
Diese Punkte habe ich in einer TList gespeichert. Es sind sehr viele Strecken. Diese bilden ein Polygon.
Während ich das Polygon male dürfen sich die Linien nicht kreuzen und berühren.
Weiss jemand wie man sowas mathematisch und Delphi macht?
Danke schonmal im vorraus
Quivadis
_________________ Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 16:16
Unter Sonstiges, Suchen im Record war eine ganz ähnliche Anfrage. Schau dir das halt mal an.
|
|
Quivadis 
      
Beiträge: 314
UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
|
Verfasst: Mo 07.03.05 16:29
Danke für den Tip.
Leider verstehe ich das irgendwie nicht.
Die Formel zur Berrechnung der Länge einer Strecke, die dort erwähnt wird habe ich schon.
Wie die Formeln zur einer Geraden sind weiss ich auch.
nur wie bastel ich das so zusammen, das das einfach funktioniert bei sehr vielen Punkten.
Ich muss ja erstmal alle Zwischenpunkte und Anstiegswinkel berrechen, wenn ich das habe muss ich dann für jede Strecke prüfen wie nah ich dran bin oder etwa schon drüber bin.
Hoffe ihr versteht was ich meine.
_________________ Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 16:36
Quivadis hat folgendes geschrieben: | Ich benötige eine einfache Formel wie man den Abstand von einen Punkt zu einer Strecke/Gerade berrechnet. Von der Strecke habe ich nur den Anfangs und den Endpunkt. |
Genau dafür hast du dort doch zwei Verfahren mit Quellcode.
|
|
Quivadis 
      
Beiträge: 314
UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
|
Verfasst: Mo 07.03.05 16:39
Wenn ich das richtig verstehe, drehen die aber das Koordinatensystem. Das kann ich nicht machen, weil ich verschiebe ja die Linien zur Laufzeit und dazu brauch ich ja die richtigen Mauskoordinaten.
Oder habe ich das immer noch verkehrt verstanden.
_________________ Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 16:46
Fast: Das gedrehte Koordinatensystem ist aber so gewählt, dass die eine Koordinate gerade der Abstand des Punktes zur Linie ist und die andere Koordinate zeigt, ob der Punkt vor (kleiner 0), neben (zwischen 0 und d) oder nach der Linie (größer als d) liegt, wobei d die Länge der Linie ist.
Die Transformationskonstanten a und o sind dabei für alle Punkte gleich, wenn du für viele Punkte den Abstand berechnen willst.
Mehr wird mit dem Koordinatensystem nicht gemacht, es hat nichts mit dem Koordinatensystem zu tun, in dem du zeichest.
|
|
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 17:02
Ich frag lieber nach, bevor ich dir eine Lösung gebe, mit der du etv. nichts anfangen kannst.
Bist du fit in Vektorrechnung? Dann wäre das Ganze nämlich geradezu banal.
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 17:04
@elite: Das hat delphiphan auch erst gedacht!
|
|
Quivadis 
      
Beiträge: 314
UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
|
Verfasst: Mo 07.03.05 17:09
So habe es mir nochmal genauer angeschaut. Könnte sein das das fast das ist was ich suche.
Bin gerade am Überlegen wie ich das alles in eine Funktion packe.
dabei ist mir folgendes aufgefallen:
Was liefert dein Quellcode r zurück und was ist Epsilon( verwendest du dort) ?
Elite: Vektorrechnung wollte ich gerade vermeiden , weil ich mir das nur selbstbeigebracht habe und auserdem nicht weis wie man das in Delphi umsetzt.
Ps: Bin scheinbar heute schwer von Begriff. Bessert sich aber hoffentlich bald wider. 
_________________ Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Mo 07.03.05 17:13
Epsilon ist eine Fehlergrenze, wie üblich in Mathe.
Hier kannst du statt Epsilon einen kleinen Wert eingeben, der zu deinen Koordinaten passt. Damit wird nur verhindert, dass durch Null dividiert wird.
|
|
Quivadis 
      
Beiträge: 314
UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
|
Verfasst: Mo 07.03.05 17:21
Thx @wdbee, man lernt doch nie aus. Schreibe mir jetzt mal eine Unit mathe wo alle Formeln drin sind die ich brauche.
Wenn ich wider Probleme habe melde ich mich nochmal bei dir.
_________________ Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
|
|