Schnittpunkte Strahl / Kegel

Hi,

fuer einen Raytracer in C++ moechte ich die Schnittpunkte zwischen einem Strahl und einem Kegel berechnen.

Gegeben ist:

Strahl: Punkt P und Richtungsvektor D
Kegel: Mittelpunkt der Basis C, Radius r und Hoehe h

Ich beisse mir jetzt daran schon eine Woche lang die Zaehne aus, habe mich natuerlich auch schon im Internet umgeschaut und diverse FAQs gelesen… vergeblich.

Kann mir jemand helfen?

Vorsicht Doppelposting mit Brett:C++
Vorsicht Doppelposting mit C++, schlage vor dort zu antworten (weil eventuell Code folgt denk ich mir halt)

mfg

Greenberet

Hi
fuer einen Raytracer in C++ moechte ich die Schnittpunkte
zwischen einem Strahl und einem Kegel berechnen.

Gegeben ist:

Strahl: Punkt P und Richtungsvektor D
Kegel: Mittelpunkt der Basis C, Radius r und Hoehe h

Ich beisse mir jetzt daran schon eine Woche lang die Zaehne
aus, habe mich natuerlich auch schon im Internet umgeschaut
und diverse FAQs gelesen… vergeblich.

Kann mir jemand helfen?

Hallo,
deine Angaben sind nicht vollständig, es fehlt die Orientierung der Achse Spitze-Basismittelpunkt.
Im einfachsten Fall (notfalls durch Koordinatentransformation herstellen) ist die Orientierung entlang der z-Achse mit der Spitze in (x0, y0, z0), hat der Kegel die Gleichung:
(x-x0)^2/r^2 + (y-y0)^2/r^2 - (z-z0)^2/h^2 = 0
Die Gerade erfüllt die drei Gleichungen:
(x,y,z) = (Px,Py,Pz) + l (Dx,Dy,Dz)
mit dem Parameter l. Einsetzen und auflösen (nach l) der quadratischen Gleichung überlasse ich dir zur Übung :smile:

Cu Rene

Hallo,
deine Angaben sind nicht vollständig, es fehlt die
Orientierung der Achse Spitze-Basismittelpunkt.

Ups, ja, die hab ich natuerlich auch, gegeben als Einheitsvektor, der von der Basis zur Spitze hin zeigt.

–Mathias