Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mai 21, 2024 13:49

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Sep 27, 2008 16:53 
Offline
DGL Member

Registriert: So Okt 21, 2007 14:16
Beiträge: 123
Programmiersprache: Delphi
Hallo,

Ich habe folgendes Problem: Ich habe 2 Linien, welche durch eine Menge von Punkten gegeben ist. Außerdem haben beide Linien eine bestimmte Breite. Wie kann ich jetzt überprüfen, ob es eine Überschneidung der Linien gibt? Der Kollisionspunkt (bzw. Fläche) ist nicht erforderlich. Für Hilfe wäre ich sehr dankbar.

Gruß Joni.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 27, 2008 17:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Deine Kurven bestehen ja aus vielen kleinen Geraden. Theoretisch müsstest du nur jedes gerade Stück der ersten Kurve mit jedem geraden Stück der zweiten Kurve auf Kollision prüfen. Wenn dies passiert, kannst du abbrechen. -> Kollision der Kurven.
Das ist zwar rechenaufwändig, doch was andere fällt mir im Moment nicht ein.

Hoffe das hilft dir weiter.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 27, 2008 17:42 
Offline
DGL Member

Registriert: So Okt 21, 2007 14:16
Beiträge: 123
Programmiersprache: Delphi
Hallo,

Danke für den Hinweis. Damit hab ich es auch erst versucht, aber es stellte sich das Problem mit der Breite (wenn sich die Mitte der Linien nicht überschneiden, die Linien sich aber trotzdem berühren, gibt die Methode keine Kollision aus, diese Methode hilft also nur bei einer Linie der Dicke 0,00000001)). Hat jemand dazu noch eine Idee/Lösung? Mir fällt lediglich ein, den Abstand der einzelnen Punkte mit der anderen Linie zu überprüfen (z.B. Punkt 1 von Teilstück 1 von Linie 1 mit Teilstück 1 von Teilstück 1 von Linie 2). Für weitere Hilfe wäre ich sehr dankbar.

Gruß Joni.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 27, 2008 17:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Dicke Linien kannst du doch als Rechtecke ansehen. Die x sind die 2 Punkte eines Teilstücks.
Code:
  1. ------------------
  2. x1              x2
  3. ------------------

Klar ist das Rechteck nicht immer axis aligned. Aber es ist bestimmt nicht schwer zu prüfen, ob ein Punkt in einem
gedrehtem Rechteck ist. Wobei deine Eckpunkte des Rechtecks zuerst noch errechnen müsstest. Hast ja bisher nur die Mittelpunkte x1 und x2.

Also vorher so prüfen wie im vorigen Beitrag, falls keine Kollision,
das hier mit allen Punkten der ersten Kurve und allen Teilstücken der zweiten Kurve testen.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 27, 2008 20:03 
Offline
DGL Member

Registriert: So Okt 21, 2007 14:16
Beiträge: 123
Programmiersprache: Delphi
Hallo,

danke für den Tipp, in deinem Fall müsste man aber die Kollision von 2 Rechtecken überprüfen, was dann auf 4*4 = 16 Kollisionüberprüfungen hinausläuft. Im Moment experimentiere ich mit dem Abstand der Punkte von den einzelnen Teilen der Linie.

Gruß Joni.

[Edit]
klappt schon einigermaßen, der Algo, den ich habe, berechnet aber auch über das Linienende hinaus. Überprüfe ich morgen.
[/Edit]

[Edit 2]
klappt jetzt, vielen Dank nochmal!
[/Edit]


Zuletzt geändert von Joni am So Sep 28, 2008 08:00, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 27, 2008 20:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Stimmt, hast Recht. Viel Erfolg beim implementieren.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.018s | 19 Queries | GZIP : On ]