AffineTransform? Pra que serve?

3 respostas
VictorMatuk

Bem, comprei um livro de Programação de Jogos em Java. Esse livro fala muito de Affine Transform.
Tentando entender o que seria isso, eu fui até o site da Sun procurar, li mas não entendi!

Poderiam me explicar e dar alguns exemplos?

3 Respostas

E

Ela serve para fazer conversões de coordenadas, por exemplo. Serve também para fazer rotações, translações e modificações de escala.

Para dar um exemplo: você sabe que o Java2D só sabe desenhar uma elipse deitada ou em pé, mas não inclinada. Se você setar corretamente as coordenadas com transformações afins, o Java2D consegue desenhar a elipse inclinada, por exemplo. Isso também serve para desenhar texto ou qualquer outra figura inclinada, invertida ou com a escala alterada.

VictorMatuk

Ah sim, até ai eu entendi. Fazendo algo como…

public void paint(Graphics g){ g2d = (Graphics2D) g; g2d.translate(10, 10); g2d.rotate(Math.toRadians(50)); }

Beleza, agora a próxima dúvida.
Pra que serve esse comando??

public class Blabla extends Applet { AffineTransform at = new AffineTransform(); public void paint(Graphics g){ g2d.setTransform(at); //Esse maldito comando que o livro repete toda hora. } }

E

Todo Graphics2D tem um AffineTransform associado.

Quando você não mexe nada, esse AffineTransform é uma transformação que não faz nada (ou seja, as coordenadas da tela são iguais às coordenadas que você usa para desenhar.)

Quando você usa

g2d.translate(10, 10);  
     g2d.rotate(Math.toRadians(50));

você está mexendo diretamente nesse objeto AffineTransform.

Agora, seu livro diz para pegar um objeto AffineTransform novo (criado do zero), e associar esse AffineTransform ao Graphics2D. A transformação default (essa que você usou com “new AffineTransform”) é uma transformação que não faz nada, mas no livro provavelmente ele vai mexer (com esses métodos “translate”, “rotate” etc.) para fazer os efeitos que você quer.

Criado 30 de junho de 2010
Ultima resposta 30 de jun. de 2010
Respostas 3
Participantes 2