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

Aktuelle Zeit: Do Mai 23, 2024 01:40

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Mathefrage
BeitragVerfasst: Fr Feb 03, 2006 18:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Hallo.
Ich hab mir im Internet ein Tutorial gesucht.
In diesem Tutorial sollen bestimmte Punkte einer Primitiven à la Quad als "front facing" bzw. "back facing" zu einer Lichtquelle eingeteilt werden.

Und im Tutorial wird das ganze so gemacht:
Zitat:
Our first step is to determine which points our shadow should be cast from. The list of points that make up the ConvexHull is looped though, and each edge is classified in regard to the light position. In pseudo code:

For every edge:
Find normal for edge<
Classify edge as front facing or back facing
Determine if either edge points are boundary points or not.
The normal for the edge is found as:

float nx = currentPoint.y - prevPoint.y;
float ny = currentPoint.x - prevPoint.x;

Then a dot product is performed with this vector and the vector to the light. If this is greater than zero, the edge is front facing. Once and edge has been classified, it is compared against the previous edge. If one is front facing and the other back facing, then the shared vertex is a boundary point. As we walk around the edge of the hull (in an anti-clockwise direction) the boundary point from light to shadow is the start shadow point. The boundary from shadow to light is the end shadow point.


Verstanden hab ich das ganze denke ich schon - nur funktionieren tut es nicht...

Zuerst mal wollte ich fragen ob die Art die Punkte zu finden funktioniert, oder ob man sie gleich in die Tonne kloppen sollte?
Nächste Frage meinerseits wäre dann ob ich "dot product" richtig mit Skalarprodukt übersetzt hab, oder ob es daran bei mir scheitert.

Und die letzte Frage:
Zitat:
float nx = currentPoint.y - prevPoint.y;
float ny = currentPoint.x - prevPoint.x;


Der Autor will die Normale der Punktes rausfinden - und zwar über ein Kreuzprodukt, oder?
Und bei dem ganzen vernachlässigt er die dritte Koordinate.

Laut meinem Mathebuch ist das Kreuzprodukt bzw. Vektorprodukt von dem Vektor â(a1/a2/a3) und dem Vektor ê(e1/e2/e3) der Vektor (a2*e3 - a3*e2/a3*e1 - a1*e3/a1*e2 - a2*e1).

Wenn ich jetzt die dritte Koordinate vernachlässige, dann sieht der Vektor meiner Meinung nach so aus: (a2 - e2/e1 - a1), während der Vektor des Tutorialschreibers (a2 - e2/a1 - e1) aussieht.

Hab ich dabei nen Denkfehler oder ist das ein Fehler im Tutorial?

cya
Deathball


Zuletzt geändert von Deathball am Sa Feb 04, 2006 18:10, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 04, 2006 15:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Ich denke mein Problem hat sich erledigt...

Zitat:
If one is front facing and the other back facing, then the shared vertex is a boundary point. As we walk around the edge of the hull (in an anti-clockwise direction) the boundary point from light to shadow is the start shadow point. The boundary from shadow to light is the end shadow point.


Genau das war der Vertex, der mir immer Probleme bereitet hat - der letzte Punkt des Schattens, also der Endpunkt.
Als ich aber mit Zettel und Stift mal ein paar Vierecke im Koordinatensystem plaziert habe und sie durchgerechnet hab, kam ich drauf das der letzte Punkt des Schattens immer "front facing" zu sein scheint.
Mein Denkfehler war, das ich glaubte der letzte Punkt des Schattens müsse "back facing" sein, allerdings scheint es nicht so zu sein bzw. zumindest scheint der Rechenweg zu funktionieren, wenn man annimmt das der letzte Punkt des Vielecks "front facing" ist.

Meiner Meinung nach bestimmt man die Normale zweier Vektoren immer noch anders als der Tutorialschreiber es tut, aber sein Rechenweg scheint zu funktionieren und somit hat sich auch mein Problem erledigt...

cya
Deathball


EDIT: Die Ausnahme ist gerade eingetreten :evil:
und ich persönlich möchte im Moment am liebsten meinen Monitor gegen die Wand pfeffern...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH!!!!


EDIT2: Da ich im Moment mit dieser Formel nicht sehr viel weiterzukommen scheine, dürft ihr gerne auch andere Methoden posten wie ich die Punkte rausbekommen könnte, an die der Schatten des Objekts anliegt...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]