TFormImage Beispiele

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

walski

Ehemaliger Admin

Betreff: TFormImage Beispiele

BeitragDi, Aug 24, 2004 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin, da eine Suche nach "TFormImage" hier im Forum genau einen Treffer brachte dachte ich mir, ich schreib mal ein bißchen was, damit der Befehl auch mal verwendet wird...
Ich weiß, TheShadow hat schon einen Beitrag auf BlitzBase.de dazu, aber das ist mir halt Laterne!

So, geht los Wink

Erstmal, was macht TFormImage?
TFormImage ist eigentlich nichts anderes als das Anwenden einer Matrix auf ein Bild, dass dann in seiner neuen Bildfläche gezeichnet wird.
Wenn mich nicht alles täuscht handelt es sich dabei um eine affine Abbildung, allerdings ohne Verschiebung und wenn ich mich jetzt immernoch nicht täuschen sollte schimpft sich dass dann lineare Abbildung.

Das ganze ist eigentlich recht simpel.

Man nehme ein normales Koordinaten System:

user posted image

Dann nehme man zwei beliebige Punkte, ich wähle:

1. Punkt := 2,1
2. Punkt := 1,-1

user posted image

Wenn man jetzt zwei geraden zeichnet auf denen jeweils der Punkt: 0,0 und einer der beiden gewählten Punkte liegt erhält man quasi zwei neue Achsen eines polaren Koordinatensystems.
Dabei ist die gerade, die auch durch den ersten Punkt geht die neue X-Achse und die, auf der der zweite Punkt liegt ist die Y-Achse.
Auf diesen neuen Achsen ist eine Einheit immer so groß, wie ihr durch die Punkte angegeben habt, also der Punkt 1,0 wäre auf der neuen X-Achse folgend bis genau zu Punkt 1. für 2,0 müsstet ihr genau doppelt so lange der neuen X-Achse folgen. 0,1 liegt demensprrechend der Y-Achse folgend, genau am zweiten Punkt.

user posted image

So, etwas verwirrend alles, aber man kann jetzt einfach Punkte in das neue System einzeichnen Wink

Ich habe mal den Punkt 1,1 mit grün im "normalen", kartesischen Koordinatensystem markiert und mit gelb im "neuen", polaren System.
Die gelbe Markierung liegt leider, wegen meines beschissen gewählten Beispiels, genau am Bildrand, das "Markierer-X" ist also nur halb zu sehen und sieht aus wie der Pfeil an der "normalen" X-Achse... ihr findet ihn also mittig, ganz rechts Wink

user posted image

So schön so gut, und wie bringt euch das jetzt weiter?

Der Befehl TFormImage arbeitet genau so.
Er verlangt einfach nach einer Abbildungsvorschrift in Form von zwei Punkten und kann dann ganze Bilder binnen Millisekunden nach dieser verformen.

Die Form der Paratemer ist (wie auch Onlinehilfe zu entnehmen) folgende:

Code: [AUSKLAPPEN]


TFormImage X-KoordinateDesErstenPunktes,Y-KoordinateDesErstenPunktes,X-KoordinateDesZweitenPunktes,Y-KoordinateDesZweitenPunktes



Daraus ergibt sich zum Beispiel folgende Funktion zum drehen eines Bildes:

Code: [AUSKLAPPEN]


Function rotateImageTForm( img,angle# )

   TFormImage img,Cos( angle# ),Sin( angle# ),-1 * Cos( angle# - 90 ),-1 * Sin( angle# - 90)
   
End Function



Das ganze ist zwar nicht schneller als RotateImage, aber was solls Wink

Außerdem lassen sich damit auch tolle Effekte realisieren, wie zum Beispiel:

Code: [AUSKLAPPEN]


Function tFormEffect( img,angle# )

   TFormImage img,Cos( angle# ),Sin( angle# ),-1 * Cos( angle# - 90 ),Sin( angle# - 90)
   
End Function



Ihr seht, durch weglassen eines Vorzeichens kann sich in der Mathematik viel verändern Wink

Also, spielt meinetwegen damit rum, oder gewinnt ihm einen Sinn ab.

Das wars erstmal von mir, Fragen beantworte ich, solange sie innerhalb meines geistigen Horizonts liegen, gern.

walski

P.S.: Entschuldigt bitte meine ungenauen Paint-Krickeleien, aber... was solls! Smile
buh!
 

OJay

BeitragDi, Aug 24, 2004 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Supi! aber bitte in tutorials damit! das liegt weit über dem niveau des codearchivs (wenn man sich beiträge etwas weiter unten ansieht Wink)

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group