Da ist ja schon ein bisschen was zusammengekommen. Nun braucht es aber wirklich die richtigen Mittel: Vektoren, Strahlensatz, Trogonometrie. Vielleicht gibt einem
OpenGL auch diese Mittel an die Hand, da kenn' ich mich nicht aus. Ohne dieses Verständnis "rechnet" man sich aber irgendwann tot.
Bewegt sich der Zeiger bspw. auf der Bildschirmebene, lautet der Vektor (Blickpunkt, Zeigerpunkt) und es muss geschaut werden, welche Ebene bzw. Fläche dieser Vektor (als erstes) durchsticht. Gehört diese Fläche dann zu einem anklickbaren Objekt...
Richtungsvektor
Selektionsvektor := Ortsvektor
Blickpunkt - Ortsvektor
Zeigepunkt;
// entspricht z.B. der grauen Linie im Bild 2
Jetzt braucht man (1) entweder einen Ortsvektor eines Punktes der Ebene und den Normalvektor der Ebene oder (2) einen Ortvektor eines Punktes der Ebene und die Spannvektoren. Hinzu kommen die Grenzen der Ebene, um daraus eine Fläche abzuleiten. Hier soll bspw. gelten: Der Ortvektor liegt genau in der Mitte und die Spannvektoren sind senkrecht zueinander und sind genau so lang, dass sie vom Endpunkt des Ortsvektors bis zur Kante der Fläche reichen. (Hier weden also nur Rechtecke definiert.)
// entspricht z.B. einer der hellroten Linien im Bild 2 (also einer Kante bei 2 Dimensionen)
Nun kann man versuchen den Schnittpunkt zu bestimmen [1]:
Ortsvektor
Blickpunkt B +
R * Richtungsvektor
Selektionsvektor S = Ortsvektor
Ebene +
X * Spannvektor 1
Ebene +
Y * Spannvektor 2
Ebene;
(R, X, Y sind Skalare)
Für die Lösung gilt dann:
(allgemein
Im Punkt P := B + R * S durchsticht der Selektionsvektor die Ebene.
Ist R > 0 liegt der Punkt vor dem Betrachter ("auf dem Bildschirm").
(für die o.g. Definitionen gilt weiter
Sind |X| <= 1 und |Y| <= 1 durchsticht der Selektionsvektor die Fläche.
[1] Hinweise: Steht der Selektionsvektor senkrecht zum Normalvektor der Ebene (d.h. der Selektionsvektor verläuft parallel zur Ebene; möglicherweise in ihr), dann hat das Gleichungssystem keine Lösung.
Man sucht die Fläche für die R minimal ist (d.h. keine verdeckte Fläche).
Hat man einmal die Fläche bestimmt, guckt man, zu welcher Struktur (Objekt) diese gehört.
Übrigens heißt es: ... mit de
m Tutorial ...
, dass es um den Cursor geht ... Perspe
ktive ... um nur einige Grausamkeiten zu nennen...