Ray: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Ein Ray (deutsch: Strahl) ist prinzipiell eine Halbgerade. Rays werden durch eine Position und einen Richtungsvektor beschrieben. Zu beachten ist hierbei dass der Richtungsvektor normalisiert sein muss! | Ein Ray (deutsch: Strahl) ist prinzipiell eine Halbgerade. Rays werden durch eine Position und einen Richtungsvektor beschrieben. Zu beachten ist hierbei dass der Richtungsvektor normalisiert sein muss! | ||
In XNA gibt es dazu die Ray<ref>[http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.ray.aspx MSDN Artikel] zur Ray Structure</ref> [[Struct]]. Diese verfügt bereits über Intersect-Methoden für verschiedene [[Bounding Volume|Bounding Volumes]], welche z.B. beim [[Ray Tracing]] direkt verwendet werden können, ohne dass man die dahinterliegende Mathematik kennen muss. | In XNA gibt es dazu die Ray<ref>[http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.ray.aspx MSDN Artikel] zur Ray Structure</ref> [[CSharp#Structs|Struct]]. Diese verfügt bereits über Intersect-Methoden für verschiedene [[Bounding Volume|Bounding Volumes]], welche z.B. beim [[Ray Tracing]] direkt verwendet werden können, ohne dass man die dahinterliegende Mathematik kennen muss. | ||
== Berechnung des Schnittpunkts == | == Berechnung des Schnittpunkts == | ||
Wenn man die Ray [[Struct]] von XNA und ihre Intersect-Methoden verwendet, dann bekommt man als Ergebnis für eine Schnittberechnung lediglich die Entfernung auf dem Ray zurück, nicht aber den Schnittpunk. Der Schnittpunkt lässt sich alledings leicht aus den Daten des Rays berechnen: | Wenn man die Ray [[CSharp#Structs|Struct]] von XNA und ihre Intersect-Methoden verwendet, dann bekommt man als Ergebnis für eine Schnittberechnung lediglich die Entfernung auf dem Ray zurück, nicht aber den Schnittpunk. Der Schnittpunkt lässt sich alledings leicht aus den Daten des Rays berechnen: | ||
<br/><br/> | <br/><br/> | ||
<math>\vec s = \vec p_r + d * \vec r_r \!\,</math> | <math>\vec s = \vec p_r + d * \vec r_r \!\,</math> |
Version vom 4. November 2009, 23:22 Uhr
Ein Ray (deutsch: Strahl) ist prinzipiell eine Halbgerade. Rays werden durch eine Position und einen Richtungsvektor beschrieben. Zu beachten ist hierbei dass der Richtungsvektor normalisiert sein muss!
In XNA gibt es dazu die Ray[1] Struct. Diese verfügt bereits über Intersect-Methoden für verschiedene Bounding Volumes, welche z.B. beim Ray Tracing direkt verwendet werden können, ohne dass man die dahinterliegende Mathematik kennen muss.
Berechnung des Schnittpunkts
Wenn man die Ray Struct von XNA und ihre Intersect-Methoden verwendet, dann bekommt man als Ergebnis für eine Schnittberechnung lediglich die Entfernung auf dem Ray zurück, nicht aber den Schnittpunk. Der Schnittpunkt lässt sich alledings leicht aus den Daten des Rays berechnen:
<math>\vec s = \vec p_r + d * \vec r_r \!\,</math>
<math>\vec s \!\,</math> ist der Schnittpunkt
<math>\vec p_r \!\,</math> ist die Position des Rays
<math>d \!\,</math> ist der Abstand zum Schnittpunkt auf dem Ray
<math>\vec r_r \!\,</math> ist der Richtungsvektor des Rays
Referenzen
- ↑ MSDN Artikel zur Ray Structure