![]() |
Re: Schnittpunkt zweier Strecken
Hi!
Du musst anhand der beiden gegeben Punkte m und n für die beiden Geradengleichungen ausrechnen! -> y = m*x+n Dann müssen beide Gleichungen gleichgesetzt werden, um sie somit zu schneiden... Dann kannst du aus dem ermittelten Werte durch Einsetzen die y-Koordinat ermitteln! Fertig ist der Schnitt punkt! :thumb: Warum ich das weiß? Habe ich grade in Mathe nochmal gemacht... :wink: Gruß, Dj_Base |
Re: Schnittpunkt zweier Strecken
Dj_Base: Danke, aber dann hab ich immernoch das Problem wenn X am Anfang und Ende gleich ist. Dann ist m nämlich unendlich groß. (Division durch Null)
|
Re: Schnittpunkt zweier Strecken
Das Problem, dass die Geraden aufeinander liegen könntest du mit einem simplen Vergleich der Startpunkte abfangen:
Delphi-Quellcode:
if (xs = xs2) and (ys = ys2) then
//1. Startpunkt ausgeben else //Schnittpunkt mit Geradengleichungen berechnen |
Re: Schnittpunkt zweier Strecken
Zitat:
Mein Vorschlag (Pseudocode):
Delphi-Quellcode:
Edit: Völliger Schwachsinn :gruebel:
if FormatOfStrecke1 = 'y=y1' then
begin Sy:=y1; if FormatOfStrecke2 = 'y=y2' then begin if y2=y1 then OK else Abbrechen; end else if FormatOfStrecke2 = 'x=x2' then begin Sx:=x2; end else if FormatOfStrecke2 = 'y=m1*x+b1' then begin Sx:=(y2-b2)/m2; end; end else if FormatOfStrecke1 = 'x=x1' then begin Sx:=x1; if FormatOfStrecke2 = 'y=y2' then begin Sy:=y2; end else if FormatOfStrecke2 = 'x=x2' then begin if x2=x1 then OK else Abbrechen; end else if FormatOfStrecke2 = 'y=m2*x+b2' then begin Sy:=m2*Sx+b2; end; end else if FormatOfStrecke1 = 'y=m1*x+b1' then begin if FormatOfStrecke2 = 'y=y2' then begin Sy:=y2; Sx:=(Sy-b1)/m1; end else if FormatOfStrecke2 = 'x=x2' then begin Sx:=x2; Sy:=m1*Sx+b1; end else if FormatOfStrecke2 = 'y=m2*x+b2' then begin //Normale Berechnung... end; end; ich überdenke das bis morgen nochmal... Edit 2: Jetzt aber :) |
Re: Schnittpunkt zweier Strecken
Liste der Anhänge anzeigen (Anzahl: 1)
Darklord,
guck' Dir doch mal den Code an, den ich für einen anderen Thread geschrieben hatte. Da ging es um die Schnittpunkte zwischen den Seiten eines Controls und einer Geraden. Dazu hatte ich eine Unit mit einer nützlichen Sammlung von Routinen für zweidimensionale Vektoren geschrieben. Darin findest Du auch eine Routine mit der Du den Schnittpunkt zweier Strecken berechnen kannst. Sag' mal, ob Du damit was anfangen kannst. mare_crisium |
Re: Schnittpunkt zweier Strecken
Hallo mare_crisium,
ich stehe vor einem ähnlichen Problem. Es geht darum Festzustellen ob ein Punkt in innerhalb eines Polygons liegt, das eine bestimmte Anzahl von Eckpunkten hat(X,Y Koordinaten). Deine Unit hab ich gerade mal runtergeladen und überflogen. Alle Achtung, hast dir sehr viel Mühe gegeben und sehr ausführlich erklärt. Werde mir deine Ausführungen heute abend mal zu gemüte führen und hoffe das ich damit weiter komme da ich mich schon seit fast einer woche mit den sch... Vektoren rumschlage. ( Sprung ins kalte Meer der Gefahren) Wäre dir dankbar wenn mich ich ggf. noch mal an dich wenden könnte. Bis dahin ertsmal danke für deine ausfürhliche Unit viele grüsse Dummy (hoch zwei) |
Re: Schnittpunkt zweier Strecken
Mit der Ausgangsfrage hat das aber nicht mehr sehr viel zu tun :wink: . Kann das Polygon auch nichtkonvex sein?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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