![]() |
Schnittpunkt zweier Strecken
Hallo,
kann mir jemand sagen wie ich den Schnittpunkt zweier Strecken, von denen ich jeweils Anfangs und Endpunkt kenne berechnen kann. Sollte es mehrere Schnittpunkte geben, so sollte die Funktion den SP zurückgeben, der am nähsten am Startpunkt von Strecke 1 liegt. Danke |
Re: Schnittpunkt zweier Strecken
Zitat:
|
Re: Schnittpunkt zweier Strecken
Zitat:
|
Re: Schnittpunkt zweier Strecken
BenjaminH: Das hab ich schon versucht, aber dann hatte ich Pobleme bei Strecken deren Start und End X Wert gleich sind. Dann kann man ja keinen Anstieg berechnen, oder?
Ultimator: Ja nur wenn sie aufeinander liegen, aber diesen Fall kann ich leider net ausschließen. Danke |
Re: Schnittpunkt zweier Strecken
Wenn die x werte von Start und End punkt einer Strecke gleich sind drehst du das ganze halt um 90°
//Edit: sollten aber auch die y werte der anderen Strecke gleich sind vergleichst du halt ob sich der x wert in den möglichen x werten der anderen Strecke befindet und mit dem Y Wert genauso. Ist das Verständlich? Ich hab des irgendwann mal gemacht, wenn du überhaupt nicht weiterkommst kann ich nmal sehen, ob ich des a.) nochmal zusammenbekomme oder b.) wieder finde eher a. Gute Nacht :hi: |
Re: Schnittpunkt zweier Strecken
Die Geradengleichung einer Gerade, die senkrecht nach oben zeigt bei x = 3, ist schlicht und ergreifend "x = 3". Damit kannst du ja leicht den Schnittpunkt mit einer anderen Geraden berechnen.
|
Re: Schnittpunkt zweier Strecken
Zitat:
x = 1 y = 2 |
Re: Schnittpunkt zweier Strecken
Zitat:
//Edit Der Rest steht im Edit, oder? |
Re: Schnittpunkt zweier Strecken
Zitat:
|
Re: Schnittpunkt zweier Strecken
Danke erstmal für die vielen Antworten,
ich werde mir das mit dem drehen mal überlegen, dann müsste es eigentlich gehen. Hab ebend auch nochmal gegoogelt und das ![]() Gute Nacht (muss morgen um 3:30 aufstehen :pale: ) |
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 08:16 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