Universalprocedure für Sprite3D
Verfasst: 16.09.2006 20:47
Diese Procedure hat folgende standart Befehle und viele Extras.
Ich habe sie hier reigestellt, weil ich schon off hier im Forumfragen dazu hatte.
- Zoomen von einem Sprite3D
- Rotate von einem Sprite3D auch mit unterschiedlichen Seitenlängen
- Verschieben des Rotationspunktes (ausgehend von der Mitte)
- Anzeigen von einem Sprite3D
- Transparenz des Sprite3D
Vorallem das Drehen von Bildern die unterschiedliche Breite und Höhe haben haben ist damit kein Problem mehr.

Ich habe sie hier reigestellt, weil ich schon off hier im Forumfragen dazu hatte.
- Zoomen von einem Sprite3D
- Rotate von einem Sprite3D auch mit unterschiedlichen Seitenlängen
- Verschieben des Rotationspunktes (ausgehend von der Mitte)
- Anzeigen von einem Sprite3D
- Transparenz des Sprite3D
Code: Alles auswählen
; Zoom und Rotate und Display von einem Sprite3D
; ----------------------------------------------
; Sprite - Nummer des Anzuzeigenen Sprite
; x - X-Positon des Mittelpunks bzw. Rotationspunkts vom Sprite
; y - Y-Positon des Mittelpunks bzw. Rotationspunkts vom Sprite
; xx - Breite des Sprite
; yy - Höhe des Sprite
; w - Rotationswinkel des Sprite (in Grad, wobei 0° Richtung Osten ist)
; dx - Verschiebt den Mittelpunkt und damit auch den Rotationspunkt
; auf dem Sprite in X-Richtung
; dy - Verschiebt den Mittelpunkt und damit auch den Rotationspunkt
; auf dem Sprite in Y-Richtung
; h - Transparenz des Sprite (0 Transparent, 255 voll sichtbar)
Procedure DisplayZoomRotateSprite3D(Sprite, x, y, xx, yy, w.f, dx, dy, h)
w = w * (#PI/180)
r.f = Sqr(Pow(xx,2)+Pow(yy,2))/2
t.f = ATan(xx/yy)
w1.f = w - t : w2.f = w + t : w3.f = w + #PI - t : w4.f = w + #PI + t
TransformSprite3D(Sprite, Cos(w1)*r, Sin(w1)*r, Cos(w2)*r, Sin(w2)*r, Cos(w3)*r, Sin(w3)*r, Cos(w4)*r, Sin(w4)*r)
DisplaySprite3D(Sprite, x-Cos(w)*dy+Sin(w)*dx, y-Sin(w)*dy-Cos(w)*dx, h)
EndProcedure
