Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen

  Alt 15. Feb 2010, 21:13
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 dem Tutorial ... , dass es um den Cursor geht ... Perspektive ... um nur einige Grausamkeiten zu nennen...
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat