Ich habe mir einmal die Zähne an einem Raycaster ausgebissen.
Ich empfehle dir die beiden Vektoren auf dem Papier allgemein zu schneiden, und dann diese Rechnung in Quellcode zu konvertieren.
Das funktioniert dann garantiert.
Streckenschnittpunkt
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
estate hat geschrieben:Ich habe mir einmal die Zähne an einem Raycaster ausgebissen.
Ich empfehle dir die beiden Vektoren auf dem Papier allgemein zu schneiden, und dann diese Rechnung in Quellcode zu konvertieren.
Das funktioniert dann garantiert.

http://www.student.kuleuven.ac.be/~m021 ... sting.html
Man kann also bei einem Raycaster jegliche Punkte auf dem Strahl einfach prüfen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
Kekskiller
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten:
Ganz genau, "Blockcasting" ist ja in dem Fall einfacher zu lösen.
@Nick: Ich musste mit Erschrecken feststellen, dass deine Funktion bei mir irgendwie nur in eine richtung funktioniert. Wenn ich eine Linie von (0|100) bis (100,100) ziehe und sie dann mit einer (0|0) bis (50|50) oder ähnlich vergleiche, bekomme ich eine Kollision heraus.
Kann natürlich auch sein, dass ich was falsch gemacht hab, aber ich finde es sehr seltsam, zumal so mein Raycaster "nur in eine Richtung sichtbar ist"
.
Oder ist das bei Vektoren so oO ?
@Nick: Ich musste mit Erschrecken feststellen, dass deine Funktion bei mir irgendwie nur in eine richtung funktioniert. Wenn ich eine Linie von (0|100) bis (100,100) ziehe und sie dann mit einer (0|0) bis (50|50) oder ähnlich vergleiche, bekomme ich eine Kollision heraus.
Kann natürlich auch sein, dass ich was falsch gemacht hab, aber ich finde es sehr seltsam, zumal so mein Raycaster "nur in eine Richtung sichtbar ist"
Oder ist das bei Vektoren so oO ?
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
@KeksKiller:
Hast du auch die richtige Funktion benutzt?
Bei mir liefert folgender Code Null:
Der folgende Code liefter eine eins zurück und die entsprechenden
Schnittkoordinaten:
Hast du auch die richtige Funktion benutzt?
Bei mir liefert folgender Code Null:
Code: Alles auswählen
Debug LineHitsLine_2D_Koord(0, 100, 100, 100, 0, 0, 50, 50, 0)Schnittkoordinaten:
Code: Alles auswählen
schnitt.Vector2D
Debug LineHitsLine_2D_Koord(19, 400, 386, 0, 10, 10, 200, 400, @schnitt)
Debug schnitt\x
Debug schnitt\y-
Kekskiller
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten: