pixelposition in rotiertem bitmap berechnen ...-->
Übersicht BlitzBasic FAQ und Tutorials
AlfadurBetreff: pixelposition in rotiertem bitmap berechnen ...--> |
Mi, Jan 19, 2005 22:51 Antworten mit Zitat |
|
---|---|---|
hallöchen ...
angenommen ich habe eine bild das ist zb 64x64 und jetzt rotiere ich das x-mal... wenn jetzt in dem ausgangsbild der pixel um den es geht bei zb (4|21) ist... wo ist er dann bei zb 227°? ich schätz mal ich muß mit cos und sin rangehen, aber bei meinen versuchen komm ich auf keinen grünen zweig... |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
sami |
Mi, Jan 19, 2005 22:53 Antworten mit Zitat |
|
---|---|---|
sin() + cos() + write/readpixel() + Onlinehilfe = | ||
TheShadowModerator |
Mi, Jan 19, 2005 22:57 Antworten mit Zitat |
|
---|---|---|
such mal nach rotation formel - links und formeln wurden schon mehrfach gepostet | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Timo |
Mi, Jan 19, 2005 22:57 Antworten mit Zitat |
|
---|---|---|
nicht lang drüber nachgedacht (also nicht meckern wenn's falsch ist ) aber müsste so gehen:
Code: [AUSKLAPPEN] Xneu = XabstandZurMitte * Cos( Winkel )
Yneu = YabstandZurMitte * Sin( Winkel ) obwohl sicher bin ich mir im Moment nicht... |
||
TheShadowModerator |
Mi, Jan 19, 2005 23:12 Antworten mit Zitat |
|
---|---|---|
das ist keine rotationformel...
ok zum letzten mal (nach ca. 10 sek. google-suche) http://www-lehre.informatik.un...ation.html nimm z-rotation |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Clonker |
Mi, Jan 19, 2005 23:36 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] xb = xz + (x-xz) * cos(angle) - (y-yz) * sin(angle) yb = yz + (x-xz) * sin(angle) + (y-yz) * cos(angle) angle ist der Drehwinkel xz/yz ist das Drehzentrum xb/yb ist der gedrehte Bildpunkt edit: ein kleines Beispiel: Code: [AUSKLAPPEN] graphics 640,480,32,2 ;Bild erstellen bild = CreateImage(100,100) SetBuffer ImageBuffer(bild) for i = 1 to 10 Color 0,0,Rand(40,255) rect rand(0,40),Rand(0,40),Rand(20,60),Rand(20,60) next Color 255,255,255 rect 0,0,100,100,0 SetBuffer FrontBuffer() ;Bild zeichnen DrawImage bild,10,50 ;Ausgangspunkt plot 10+50,50+20 color 255,0,0 line 10+50-4,50+20,10+50+4,50+20 line 10+50,50+20+4,10+50,50+20-4 ;Bild um 60 Grad drehen RotateImage bild,60 ;Bild zeichnen DrawImage bild,200,50 ;Gedrehten Punkt ermitteln xb = 0 + (50-0) * cos(60) - (20-0) * sin(60) yb = 0 + (50-0) * sin(60) + (20-0) * cos(60) ;und einzeichnen color 255,255,255 plot 200+xb,50+yb color 255,0,0 line 200+xb-4,50+yb,200+xb+4,50+yb line 200+xb,50+yb+4,200+xb,50+yb-4 ;Und nochmal Drehen und einzeichnen RotateImage bild,60 DrawImage bild,400,50 xb = 0 + (50-0) * cos(120) - (20-0) * sin(120) yb = 0 + (50-0) * sin(120) + (20-0) * cos(120) color 255,255,255 plot 400+xb,50+yb color 255,0,0 line 400+xb-4,50+yb,400+xb+4,50+yb line 400+xb,50+yb+4,400+xb,50+yb-4 Waitkey() |
||
Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz.
Athlon XP 2800|Radeon 9600 Pro|512MB DDR RAM|240GB Festplatte |
Alfadur |
Do, Jan 20, 2005 3:11 Antworten mit Zitat |
|
---|---|---|
gracias... damit kann ich was anfangen .-) | ||
A Cray is the only computer that runs an endless loop in less than four hours. |
Übersicht BlitzBasic FAQ und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group