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?
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?
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.
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.
}
}
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.