Tetrisbaustein Drehen
-
Hallo,
Ich programmiere gerade ein mit Tetris vergleichbares Spiel mit OpenGL.
Ich verzweifle im Moment daran, wie ich meinem PC beibringen soll die Steine zu drehen (z.B 90° nach links)Mein Gesamtstein (zum Beispiel in L-Form) besteht programmiertechnisch aus 4 quadratischen Einzelsteinen. Die Einzelsteine haben jeweils zwei Koordinaten, für die X und die Y Position im Raster.
Zum Beispiel haben die Steine meines L's, welches aufrecht links oben im Raster sitzt, die Koordinaten:(0|0)
(0|1)
(0|2)(1|2)Jetzt möchte ich die Steine um 90° nach links drehen, sagen wir der Stein (0|1) beschreibt die Drehachse, er ändert also seine Position nicht.
Jemand eine Idee wie ich die Koordinaten der restlichen Steine neuberechnen kann?
-
Schonmal mit sin() und cos() probiert?
-
ja, aber nicht erfolgreich...
/Edit:
Dein Tipp hat mir geholfen:Das ganze Funktioniert so:
-Zuerst die Koordinaten auf die Drehachse beziehen, aus meinem L wird dann:(0|-1)
(0|0) <-- Drehachse
(0|1)(1|1)Dann die Formel anwenden:
x' = x * cos(a) - y * sin(a)
y' = x * sin(a) + y * cos(a)wobei a = Winkel Alpha.
Anschließend alle Koordinaten wieder + (0|1) rechnen und fertig!
-
Jo
Musst nur beachten, dass die Gradangaben umzurechnen, also 90 Grad = 1/2 Pi und so, wenn die Funktionen RAD-Werte erwarten
-
Hab ich per
#define PI 3.141592653589793f #define SIN(a) sin(a*PI/180.0f) #define COS(a) cos(a*PI/180.0f)
gelöst.
-
RedPuma schrieb:
#define PI 3.141592653589793f
Lass hier besser das "f" weg, dann hast du einen genaueren Double-Wert. Floats sind, meine ich, nur auf 6 Nachkommastellen genau.
-
Brauche für meine Grafischen Zwecke nur float-Genauigkeit, ich will ja keine exakten mathematischen Berechnungen ausführen.
Wenn du dir den Source-Code von Half-Life 2 anschaust, da sind alle Fließkommazahlen floats.Hab ich nebenbei ganz vergessen:
Danke für alle Antworten.
-
RedPuma schrieb:
Brauche für meine Grafischen Zwecke nur float-Genauigkeit, ich will ja keine exakten mathematischen Berechnungen ausführen.
Wenn du dir den Source-Code von Half-Life 2 anschaust, da sind alle Fließkommazahlen floats.Ok. Ich dachte, es wäre vielleicht ein Versehen, da du so viele Stellen angegeben hast.
-
Wo gibts den Sourcecode von Halflife 2?
-
MasterCounter schrieb:
Wo gibts den Sourcecode von Halflife 2?
-
MasterCounter schrieb:
Wo gibts den Sourcecode von Halflife 2?
Davon gab es doch damals mal eine Raubkopie. Irgendein Spinner hat den Source von Valve geklaut. Wahrscheinlich meint er den...
-
Erm, wenn man (so wie ich) Half-Life 2 besitzt kann man sich über Steam das Source SDK runterladen, da ist der finale Source-Code von Half-Life 2 (nicht der der Source Engine) ganz offiziell und legal enthalten.
Ansonsten wäre wohl die Modding-Community nicht so groß.Ich habe mir mit dem Source-Code übrigends selber das Programmieren mit C++ beigebracht, ein paar basics konnte ich zwar schon vorher, aber kompliziertere Sachen wie Zeiger, Klassen und Templates waren mir unbekannt.
-
Hast du schonmal was von Matrizen gehört? Wenn nicht wird es Zeit. Alles was du brauchst ist eine Drehmatrix.