Moin.
Da man ja jetzt mit der SDL2 seine Texturen drehen kann , dacht ich mir ich bau das mal in mein Projekt ein + eine Kollisionserkennung für eben gedrehte Rechtecke.
So , jetzt habe ich folgendes Problem :
Die Koordinaten ,die für die Eckpunkte rauskommen ,passen (außer bei einem Winkel von 0,180,360,... Grad) überhaupt nicht.
Getestet hab ichs mit einem Rechteck mit Höhe 50 und Breite 100.
Beim Beispiel im Anhang(90° Drehung von besagtem Rechteck;m ist der Mittelpunkt) müsste ich aber ,wenn ich mich nicht irre ,folgendes rausbekommen : a( 125,75) b(175,75) c(175,175) d(125,75).
Hier der Code ,mit dem ich die Koordinaten ermittle :
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
double cosVal = cos(-angle*DEG2RAD);
double sinVal = sin(-angle*DEG2RAD);
a.x -= center.x; b.x -= center.x; c.x -= center.x; d.x -= center.x;
a.y -= center.y; b.y -= center.y; c.y -= center.y; d.y -= center.y;
a.x = a.x * cosVal - a.y * sinVal; a.y = a.x * sinVal + b.y * cosVal;
b.x = b.x * cosVal - b.y * sinVal; b.y = b.x * sinVal + b.y * cosVal;
c.x = c.x * cosVal - c.y * sinVal; c.y = c.x * sinVal + c.y * cosVal;
d.x = d.x * cosVal - d.y * sinVal; d.y = d.x * sinVal + d.y * cosVal;
a.x += center.x; b.x += center.x; c.x += center.x; d.x += center.x;
a.y += center.y; b.y += center.y; c.y += center.y; d.y += center.y;
|
Ich komm grad echt nicht mehr weiter.
Weiß eventuell jemand wo ich da auf der Leitung steh ?
Danke schonmal.
Edit: Anhang vergessen...