Seite 1 von 1

Universalprocedure für Sprite3D

Verfasst: 16.09.2006 20:47
von STARGÅTE
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

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
Vorallem das Drehen von Bildern die unterschiedliche Breite und Höhe haben haben ist damit kein Problem mehr.

:allright:

Verfasst: 17.09.2006 03:45
von Kaeru Gaman
klingt so easy, is aber knackig.

thnx for sharing :allright:

Verfasst: 17.09.2006 13:13
von DataMiner
Mein lieber Mann!
Kurz und knackig!

Klasse!
:o :allright: