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

Aktuelle Zeit: Fr Jul 18, 2025 23:33

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Aug 14, 2009 22:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich verwende seit recht langer Zeit diesen Algorithmus um zu überprüfen ob ein Ray ein Triangle trifft:

http://www.cs.virginia.edu/~gfx/Courses ... ection.pdf


Das hatte bisher eigentlich immer geklappt, nur... bei manchen Triangles macht das ding irgendwie fehler, bzw liefern ein true zurück obwohl es false sein sollte..

z.B. bei dem hier:

Code:
  1.     CIVertexf vert0(240, 0, -555.375);
  2.     CIVertexf vert1(64, 0, -592);
  3.     CIVertexf vert2(240, 0, -517.375);
  4.  
  5.     CIVertexf rayOrigin(130.333, -200, -576.244);
  6.     CIVertexf rayDirection(0, -1, 0);


Hat irgendwer eine idee woran das liegt..? Bzw.. wie muß man ihn ändern damit es geht? :)

Aya~

PS: Oder ich hab irgendwo nen dummen fehler beim abtippen gemacht.. aber eigentlich hab ich das ganze grad 10x überprüft :/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 15, 2009 13:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich denke du hast beim abtippen ein Fehler gemacht oder das Backfaceculling Define aktive, wenn dann die vektoren falsch übergeben sind, würde es auch fehlschlagen, wenn es das Triangle trift.
Ich hab das mal mit einen XNA portierung für C# verglichenm und der Code ist gleich.
http://www.ziggyware.com/readarticle.php?article_id=78
Leider ist der Orginalcode von dem Artikel nicht mehr auf dem Server.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 15, 2009 17:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
TAK2004 hat geschrieben:
Ich denke du hast beim abtippen ein Fehler gemacht oder das Backfaceculling Define aktive, wenn dann die vektoren falsch übergeben sind, würde es auch fehlschlagen, wenn es das Triangle trift.
Ich hab das mal mit einen XNA portierung für C# verglichenm und der Code ist gleich.
http://www.ziggyware.com/readarticle.php?article_id=78
Leider ist der Orginalcode von dem Artikel nicht mehr auf dem Server.


Hast du es denn mal mit dem Triangle ausprobiert das ich oben geschrieben habe?
Es ist egal ob mit oder ohne Backfaceculling.. es kommt immer ein treffer raus, obwohl es nicht trifft.

Wenn das bei XNA genauso aussieht der code heißt das nicht zwingend das es funktioniert..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 15, 2009 18:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hoffe, doch wenn wer es portiert, dass er es auch verwendet. Zugegeben ein bischen Naiv aber ich hoffe trotzdem darauf.
Leider bin ich den ganzen Tag über nicht zuhause und deswegen konnte ich es selber noch nicht ausprobieren aber ich bin bald Zuhause, dann guck ich mir das mal im Debugger an.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 15, 2009 19:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich bin zwar noch nicht zuhause aber ich hab das mal Schriftlich durchgearbeitet und bei mir bricht er bei deinen werten bei der Determinantenprüfung ab, da diese 0 ergibt.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 17, 2009 09:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
TAK2004 hat geschrieben:
Ich bin zwar noch nicht zuhause aber ich hab das mal Schriftlich durchgearbeitet und bei mir bricht er bei deinen werten bei der Determinantenprüfung ab, da diese 0 ergibt.


Hast du es mit dem algorithmus von dem PDF das ich oben verlinkt habe durchgerechnet?
Oder mit dem den du da verlinkt hast..?

Der den du da hast den hatte ich vor meinem post schon ausprobiert und der geht aufjedenfall, nur ich wollte halt diesen anderen da haben grade weil der auch backface culling unterstüzt.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 17, 2009 22:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab die PDF, die du gelinkt hattest genommen.
Rechenfehler meinerseits sind natürlich nicht ausgeschlossen aber an deiner stelle würde ich mal mit dem debugger die werte durch arbeiten und gucken ob nicht vieleicht ein fehler mit den pointer gemacht hast. Ich würde die Funktion eh umschreiben, diese ist nicht gerade das was man performant nennt. Referenzen, ein paar const rein, damit der compiler diese als nur lesen erkennt und den code besser optimieren kann, die rechenoperationen auf die eigene mathebiblio umstellen und 4 statt 3 Komponentenvektoren verwenden aber da erzähle ich dir ja nichts neues.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 17, 2009 22:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
TAK2004 hat geschrieben:
Ich hab die PDF, die du gelinkt hattest genommen.

mh... dann werd ich das morgen auch mal von hand nochmal nachrechnen und überprüfen wo der fehler liegt.


TAK2004 hat geschrieben:
aber da erzähle ich dir ja nichts neues.

Korrekt ;)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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.008s | 16 Queries | GZIP : On ]