Universalprocedure für Sprite3D

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Universalprocedure für Sprite3D

Beitrag 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:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

klingt so easy, is aber knackig.

thnx for sharing :allright:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
DataMiner
Beiträge: 220
Registriert: 10.10.2004 18:56

Beitrag von DataMiner »

Mein lieber Mann!
Kurz und knackig!

Klasse!
:o :allright:
__________________________________________
Weniger glauben - mehr wissen!
------------------------------------------------------
Proud beneficial owner of SpiderBasic, PureBasic 3.x, 4.x, 5.x and PureVisionXP
Antworten