Bild drehen

Harald2018

Grünschnabel
Hallo Leute ,

hab ein Problem ein Bild 128 x 128 zu drehen , und zwar in 1 Grad art.
Programmiere mit Assembler FASM 32 Bit in Dos , was später in 64 Bit eingesetzt werden soll.
Habe also ein Bild 128 mal 128 auf Art Zeiger Art auf den Bildschirm programmiert ,in dem ich pro Grad das Bild zeichnen lasse und alles was ich pro Grad
auf den Bildschirm zeige im Zwischenspeicher abgelegt habe, mit End Code. Also von der Mittelpunkt jeden Punkt mit seiner X und Y Koordinaten zeichnen
lassen und zwischen kopiert bis der erste Grad im Bildschirm abgelegt und zwischengespeichert ist dann denn nächsten Grad das selbe bis hin 360 Grad
funktioniert auch bringt das komplette Bild auch auf den Bildschirm. Den Radius hatte ich allerdings grösser aufgebaut , so das man das Bild in der Mitte sieht
und am Rand herum schwarz abgebildet wird.
Mein Problem ist jetzt die um 1 Grad drehendes Bildes. Habe im Grad Null (Zeigerstellung 12) , die Daten genommen und deren X und Y Koordinaten neu
berechnet und abgelegt in Bildschirm. Also jeden Punkt von Null genommen und in 1 Grad verschoben kopiert usw bis der erste Zeiger vorhanden ist und
dann den nächste Grad (1 Grad ) auf dieselbe weiße auf 2 Grad kopiert bis alle 360 Grad von Bild Komplett verschoben wird. Nur das funktioniert leider
nicht , kann mir jemand sagen was ich da falsch mache ?
Wie kann man ein Bild zum drehen bekommen , rein theoretisch . Was muss ich beachten bei verschieben von einen Grad !!
 
Also ich habe das jetzt mehrfach gelesen, und ich bin mir immer noch nicht ganz sicher, was du eigentlich tust.
Du schreibst wenn ich es richtig verstanden habe ein Assembler-Programm, das in einen 128×128 Pixel großen Bildpuffer zeichnet?
Und du möchtest Uhrzeiger in 1°-Schritten da reinzeichnen?

Nur das funktioniert leider
nicht , kann mir jemand sagen was ich da falsch mache ?
"Funktioniert nicht" ist leider keine ausreichende Fehlerbeschreibung. Was genau hättest du erwartet? Was beobachtest du? Worin unterscheidet sich die Beobachtung von deiner Erwartung?

Am besten schickst du einfach mal ein Bild davon.

Gruß Technipion
 
Nein ,ich mochte das das Bild 128X128 in Uhrzeiger Richtung auf den Bildschirm gedreht wird und zwar in 1 Grad . siehe Bild als Beispiel

Dieses Bild will ich in schritten um ein Grad jeweils komplett drehen..
Meine Frage ist was muss ich beachten wie ich dieses Bild um einen Grad drehen kann. Oben habe ich erklärt wie ich es in Assembler drehe aber leider geht das nicht. Ein Zeichenprogramm wie Gimp z . b kann dieses Bild um jeweils pro Grad drehen bis 360 Grad herum .Das möchte ich in meinen Programm auch entwickeln. Dieses Bild kann ich pro grad auch den Bildschirm bringen und zwar komplett und das will ich dann drehen um jeweils 1 Grad.
 

Anhänge

  • KreisZ7.gif
    KreisZ7.gif
    12,9 KB · Aufrufe: 12
Mein Freund meinte ich soll das Problem nach einen Kuchenprinzip erklären.
Also angenommen ich habe einen Runden Käsekuchen oben auf den Käsekuchen befindest sich
ein Bild so wie z . b KreisZ7.gif . Jetzt kommt meine Frau und schneidet mein runden Kuchen in
360 Stücken. Ein jeweiliges Stück ist ja ein Dreieck .Angenommen ich nehme ein Stück das sich im
Uhr 12 (oder 0) befindet und stecke das in Position 1 Uhr hierein , das was in 1 Uhr stecke ich in die 2 Uhr Position und so weiter dann müsste das Bild sich ja um ein Grad verschoben haben. Genau diese Art hatte ich mit Assembler auch programmiert in dem ich Kuchenstück 0 mit seine Bilddaten auf Position 1 kopiert habe , allerdings mit neue Position. Das Kuchenstück 1 mit seine Bilddaten auf neue Position 2 kopiert u . s. w. bis alle 360 Kuchenstücker um ein Grad verschoben ist. Meine Frage ist kann ich die daten (z. b. Position 0)nehmen und auf neue Position 1 verschieben ? Oder muss ich noch was beachten ? Denn so habe ich versucht das Bild zu verschieben. Entweder meine Theorie stimmt nicht oder ich habe in Assemblerprogramm ein Fehler gemacht .Wenn ich es um einen Grad verschiebe verwischt sich das Bild.
Drehe ich es aber weiter bis 360 Grad dann kommt das Bild sauber wieder zum Vorschein.
 
So genau, weiß ich nicht, was du da versuchst.
Das "verschwommene Bild" hört sich aber an, als ob dein rotationsalgorithmus nicht stimmt.
Ich weiß nicht, welchen du verwendest. Rotationen im Raum macht man am besten, indem man eine Rotationsmatrix verwendet. Machst du das so?
Wenn es um image Rotationen geht muss man manchmal noch ein antialising beachten. Dieser Artikel (Englisch) kann dabei wichtige Hinweise geben.
 
Vielleicht ist das Hilfreich , aber ich denke mein Mathematik ist richtig .Werde aber alles nochmal anschauen und mit dem vergleichen was Andreas B gab. Vielleicht finde ich mein Fehler. Danke erstmal an beiden.
 
Zurück