AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Den Schnittpunkt zweier Strecken berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Den Schnittpunkt zweier Strecken berechnen

Ein Thema von jfheins · begonnen am 1. Mär 2006 · letzter Beitrag vom 4. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Den Schnittpunkt zweier Strecken berechnen

  Alt 1. Mär 2006, 23:12
Ich habe zwei linien, beschrieben durch ax1, ay1, ax2, ay2 bzw. bx1, by1, bx2, by2 ...

sie gehen immer von 1(x1|y1) nach 2 (x2|y2)

Nun brächte ich die Info:

-Gibt es einen Schnittpunkt?

-Wenn ja, wo?

Ich habe beim SDC einen Code gefunden, der den Schnittpunkt berechnet, aber der Schnittpunkt dort kann auch ausserhalb der Linien liegen - bei mir darf er das nicht.

(Wenn die Linien also nicht parallel sind, heisst das noch lange nicht, dass es einen Schnittpunkt gibt ...)

Oder mathematisch: Der SDC berechnet den Schnittpunkt zweier Geraden, ich brauche aber den Schnittpunkt zweier Strecken

Ach ja, performant sollte es auch noch sein ...

Danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 1. Mär 2006, 23:27
Eine Suche im Forum hilft mir bei den meisten meiner Delphi-Probleme.

Schnittpunkt zweier Strecken sollte dir helfen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 1. Mär 2006, 23:50
Soweit ich das sehen kann, sind sie auch da nicht zu einer guten Lösung gekommen ...

Was ich gerne vermeiden würde ist das "Geradengleichung herausfinden, schnittpunkt herausfinden, gucken ob er auf der strecke liegt" weil ich z.B.

- u.u. waagerechte und senkrechte strecken habe

- den schnittpunkt berechne und dann sehe, dass er mich doch nichts bringt

- zuviel rechnerei ...

gibt es da kein kurzes verfahren ?
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 00:28
du behandelst beide strecken erstmal als geraden und rechnest den schnittpunkt aus. dann rechnest du für jede strecke aus, wie weit die beiden endpunkte auseinander liegen, und rechnest den abstand des schnittpunktes zu beiden punkten aus. wenn der Abstand Schnittpunkt/Endpunkt für alle Endpunkte kleiner als die jeweilige streckenlänge ist, dann liegt der schnittpunkt auf der strecke.
das wäre das erste was mir einfält, es geht sicher noch besser (ich hätte es z.b. direkt mit vektoren gemacht, aber ich weiss ja nicht wie weit du da so bewandert bist).

ach ja, da es ja nur um die relativen abstände geht, kannst du auch die quadrierten abstände betrachten, d.h. du kannst dir bei der Abstandsberechnung die Wurzel schenken (die ja der Pythagoras sonst mitgebracht hätte).

und den schnittpunkt wirst du so oder so berechnen müssen; aber das ist ja auch kein thema, das kannst du ja direkt alles in eine formel reinstecken.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#5

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 06:25
Hallo,

Geradengleichungen aufstellen,P(x0,y0),Q(x1,y1)
Schnittpunkt berechnen, S(xs,ys)
dann wenn gilt:
wenn x0<x1 --> x0<=xs<=x1 dann liegt Schnittpunkt vor
wenn x0>x1 --> x1<=xs<=x0 dann liegt Schnittpunkt vor

Nur für deckungsgleiche geraden und senkrechte musst du eine Sonderbehandlung vorsehen.
Die Berechnung dieser Dinge ist so einfach, dass ich mir das spare.

Rainer
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 08:07
Du kannst auch vor der Geradengleichung testen, ob es einen Schnittpunkt geben könnte, indem Du Dir einfach mal anschaust, unter welchen Bedingungen sich zwei Strecken überhaupt schneiden. Eine Strecke (P1-P2) hat ja ein umhüllendes Rechteck. Wenn sich diese Rechtecke gar nicht überlappen, gibts auch keinen Schnittpunkt. Damit könnstest Du viele Tests erstmal erschlagen.

Weiterhin kannst Du die Strecken in Quadranten unterteilen und nur die Strecken in Betracht ziehen, die in unmittelbarer Nachbarschaft des Quadranten der Strecke liegen, die Du prüfen willst. Wenn Du diese Quadranten dann noch indizierst, also eine sortierte Liste erstellst, musst Du aus den Abermillionen Strecken wirklich nur noch ein paar testen...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 08:57
Zitat von BlackJack:
es geht sicher noch besser (ich hätte es z.b. direkt mit vektoren gemacht, aber ich weiss ja nicht wie weit du da so bewandert bist).
Das besser würde mich interessieren
(Vektoren sind da jetzt auch kein Problem mehr)
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#8

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 09:02
kuckst Du hier
Bei ausreichendem Englisch solltest Du dort alles finden, was Dein Herz in Sachen Geometrie begehrt.
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#9

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 09:03
Hallo,

es geht noch einfacher:
die Wertebereiche der x Werte müssen sich überdecken!
So kannst du entscheiden ob es überhaupt einen Schnittpunkt geben kann.

Rainer
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Den Schnittpunkt zweier Strecken berechnen

  Alt 2. Mär 2006, 10:11
Zitat von alzaimar:
... Eine Strecke (P1-P2) hat ja ein umhüllendes Rechteck. Wenn sich diese Rechtecke gar nicht überlappen, gibts auch keinen Schnittpunkt. Damit könnstest Du viele Tests erstmal erschlagen. ...
Zitat von runger:
...es geht noch einfacher:
die Wertebereiche der x Werte müssen sich überdecken!
So kannst du entscheiden ob es überhaupt einen Schnittpunkt geben kann.
Rainer
Sach ich doch.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 15:22 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