pixelposition in rotiertem bitmap berechnen ...-->

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

Alfadur

Betreff: pixelposition in rotiertem bitmap berechnen ...-->

BeitragMi, Jan 19, 2005 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jan 19, 2005 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
sin() + cos() + write/readpixel() + Onlinehilfe = Very Happy

TheShadow

Moderator

BeitragMi, Jan 19, 2005 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
such mal nach rotation formel - links und formeln wurden schon mehrfach gepostet
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Timo

BeitragMi, Jan 19, 2005 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht lang drüber nachgedacht (also nicht meckern wenn's falsch ist Wink ) aber müsste so gehen:
Code: [AUSKLAPPEN]
Xneu = XabstandZurMitte * Cos( Winkel )
Yneu = YabstandZurMitte * Sin( Winkel )


obwohl sicher bin ich mir im Moment nicht...

TheShadow

Moderator

BeitragMi, Jan 19, 2005 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jan 19, 2005 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jan 20, 2005 3:11
Antworten mit Zitat
Benutzer-Profile anzeigen
gracias... damit kann ich was anfangen .-)
A Cray is the only computer that runs an endless loop in less than four hours.

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group