Amigo, desculpem incomodar,

Será que alguem poderia dar uma ajudinha com uma função pra rotacionar 
uma imagem utilizando o canvas?

Eh pra um trabalho da facul e tah meio em cima da hora, sabe neh.

O vetor OBJ contém todos os pontos da figura, segundo a teoria eu devo 
trazer todos os pontos para uma posição comum, aplicar os calculos de 
rotação e voltar todos os pontos para a posicao anterior.

Segundo a teoria que tenho seria isso:
Rotação de θ graus sobre o ponto (X,Y)
1. Translação (X,Y) até Origem
2. Rotacionar θ graus
3. Translação Origem até (-X,-Y)
T(x,y) * R(θ) * T(-x,-y)

Ai tenho como se faz a transalação:
xNOVO = xANTIGO + Dx
yNOVO = yANTIGO + Dy

E como se faz a rotação:
xNOVO = xANTIGO * cos(θ) + yANTIGO * sin(θ)
yNOVO = xANTIGO * sin(θ) + yANTIGO * cos(θ)

Agora segue a forma que estou tentando fazer isso:

for i := 0 to Length(OBJ)-1 do
begin
OBJ[i].X := OBJ[i].X+StrToInt(edXt.Text);
OBJ[i].Y := OBJ[i].Y+StrToInt(edYt.Text);
end;
for i := 0 to Length(OBJ)-1 do
begin
OBJ[i].X := Round(OBJ[i].X*Cos(0))+(OBJ[i].Y*Sin(0));
OBJ[i].Y := Round(OBJ[i].X*Sin(0))+(OBJ[i].Y*Cos(0));
end;
for i := 0 to Length(OBJ)-1 do
begin
OBJ[i].X := OBJ[i].X+(StrToInt(edXt.Text)*-1);
OBJ[i].Y := OBJ[i].Y+(StrToInt(edYt.Text)*-1);
end;
Desenha.


[ ]'s Rodrigo



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a