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.
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.
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