Показать сообщение отдельно
  #1  
Старый 07.09.2010, 21:46
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию Оптимизация поворота (ускорение)

в общем написал я код, который поворачивает картинку, ускорял как мог, что получилось:

Код:
const da = 1;
var x_,y_,a: Real;
    x,y: Integer;
    cl,trcl: TColor;
    sina,cosa: Real;

begin
trcl:=Image1.Canvas.Pixels[0,0];
a:=pi/180*da;
while true do begin
sina:=sin(a);
cosa:=cos(a);
for x:=0 to Image1.Width-1 do
    for y:=0 to Image1.Height-1 do begin
      cl:=Image1.Canvas.Pixels[x,y];
      If cl<>trcl then begin
        x_:=(x-Image1.Width/2)*cosa-(y-Image1.Height/2)*sina+Image1.Width/2;
        y_:=(x-Image1.Width/2)*sina+(y-Image1.Height/2)*cosa+Image1.Height/2;
        Image2.Canvas.Pixels[Round(x_),Round(y_)]:=cl;
      end;
    end;
a:=a+pi/180*da;
Application.ProcessMessages;
end;
end.

ускорял как мог (синус и косинус только 1 раз считаю, не беру прозрачные пикселы) но все равно он вращает медленно, может у кого есть идеи как это ускорить?
Ответить с цитированием