Ray

Aus Das Sopra Wiki

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

  1. MSDN Artikel zur Ray Structure