AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Merkwürdiger Effekt bei Drehung einer Grafik
Thema durchsuchen
Ansicht
Themen-Optionen

Merkwürdiger Effekt bei Drehung einer Grafik

Offene Frage von "Taunuskrieger"
Ein Thema von Taunuskrieger · begonnen am 25. Aug 2008 · letzter Beitrag vom 26. Aug 2008
 
Taunuskrieger

Registriert seit: 25. Aug 2008
2 Beiträge
 
#1

Merkwürdiger Effekt bei Drehung einer Grafik

  Alt 25. Aug 2008, 18:53
Hallo zusammen,

ich habe mir eine kleine Routine geschrieben, mit der ich eine Grafik innerhalb eines TImage drehen kann:

Delphi-Quellcode:
procedure TTurtle.Linksdrehung(winkel: integer);
var i,j, xcoord, ycoord:integer;
    farbe:TColor;
    xneu,yneu,alpha:real;
begin
                laufwinkel:=(laufwinkel+winkel) mod 360;
                alpha:=-1*laufwinkel;
                for j:=0 to 20 do begin
                        for i:=0 to 19 do begin
                                xcoord:=i-10;
                                ycoord:=j-10;
                                if ((i>1) and (i<18) and (j>4) and (j<16)) then begin
                                        farbe:=TurtleBild[(j-5)*16+i-2];
                                end
                                else farbe:=clWhite;
                                xneu:=xcoord*cos(alpha*(Pi/180))-ycoord*sin(alpha*(Pi/180))+10;
                                yneu:=xcoord*sin(alpha*(Pi/180))+ycoord*cos(alpha*(Pi/180))+10;
                                xcoord:=Round(xneu);
                                ycoord:=Round(yneu);
                                if ((xcoord>0) and (xcoord<20) and (ycoord>0) and (ycoord<21))
                                        then TurtleFigur.Canvas.Pixels[xcoord, ycoord]:=farbe;
                        end;
                end;
end;
Das Image TurtleFigur selbst ist 20x21 Pixel groß, die Farben für die Grafik sind pixelweise im Array TurtleBild gespeichert. Die Grafik ist 16x11 Pixel groß.
Laufwinkel ist eine globale Variable vom Typ integer und kann, bedingt durch meine Programmierung, Werte im Bereich 0 bis 359 annehmen.

Nun zu meinem Problem:
Rufe ich die Methode nacheinander auf (z.B. durch Druck auf einen Button), und wähle den Winkel, um den sich das ganze drehen soll, sehr klein, sieht das Ergebnis ganz gut aus.
Wähle ich allerdings sofort einen Winkel von 45 Grad, ist das Ergebnis total verpixelt. Eigentlich bin ich der Meinung, dass das Ergebnis dasselbe sein müsste (weil alpha in jedem Fall -45 beträgt), aber dem ist nicht so.

Wenn ich noch eine Schleife um die Methode bastele (also den laufwinkel nicht gleich um winkel erhöhe, sondern in Einerschritten), dann ist das Ergebnis auch ok. Mich würde aber noch der Grund für den Effekt interessieren. Hat jemand eine Idee?
Angehängte Dateien
Dateityp: zip turtle_133.zip (11,0 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz