Aktuelle Zeit: 21.12.2024, 15:27

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bild rotieren
BeitragVerfasst: 04.04.2011, 05:37 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Hi,

hatte für das Buch Irrlicht - From Noob to Pro eine Funktion geschrieben um Bilder in Irrlicht zu drehen. Will nicht viele Worte dazu verlieren ist ausführlich hier beschrieben. Anbei eben nur der Code der Funktion.

Grüße heck

Code:
ITexture* rotateImage(ITexture* source, f32 angle)
{
        if(!source)
        {
                return NULL;
        }

        if(angle == 0.0f)
        {
                return source;
        }

        IVideoDriver* driver = device->getVideoDriver();

        s32 midx = source->getOriginalSize().Width/2;
        s32 midy = source->getOriginalSize().Height/2;

        IImage* virtualSourceImage = driver->createImage(source, position2d<s32>(0,0), source->getOriginalSize());

        IImage* target = driver->createImage(ECF_A8R8G8B8, dimension2d<u32>(2*sqrt((f32)(midx*midx + midy*midy)), 2*sqrt((f32)(midx*midx + midy*midy))));
        target->fill(SColor(0,0,0,0));

        s32 tx = 0, ty = 0;

        for(s32 x = 0; x < (s32) source->getOriginalSize().Width; x++)
        {
                for(s32 y = 0; y < (s32) source->getOriginalSize().Height; y++)
                {
                        tx = (s32)((x-midx)*cos(angle*3.14159265/180) - (y-midy)*sin(angle*3.14159265/180));
                        ty = (s32)((y-midy)*cos(angle*3.14159265/180) + (x-midx)*sin(angle*3.14159265/180));

                        target->setPixel(tx+midx,ty+midy, virtualSourceImage->getPixel(x,y));
                }
        }

        return driver->addTexture("rotatedImage", target); 
}


_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Bild rotieren
BeitragVerfasst: 03.05.2011, 11:24 
Offline
Newsposter
Benutzeravatar

Registriert: 12.03.2007, 10:42
Beiträge: 338
Wohnort: Berlin
Hi Heck, wäre es nicht interressanter eine Vector Rotation wie unter folgendem link durchzuführen um ein paar rechenzyklen für anderre features auf zu sparen: http://blog.wolfire.com/2010/07/Linear-algebra-for-game-developers-part-3


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Bild rotieren
BeitragVerfasst: 03.05.2011, 14:03 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Definitiv. Irrlicht hat ja auch ne eigene Matrixklasse, mit der man eine Rotationasmatrix erstellen kann und mit dieser dann rotiert, sollte um einiges schneller sein, jenachdem wie die Matrixklasse nach innen hin arbeitet. Hab gestern erst n schönes Beispiel zu gesehen. Von daher sollte ich die auf jeden Fall mal überarbeiten^^'

Danke für die Anregung.

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de