Conteúdo principal
Programação
Escala
O transformação final do sistema de coordenadas é a escala, que altera o tamanho do sistema. Dê uma olhada nesse programa, que desenha um quadrado, e então escala o plano para duas vezes seu tamanho normal, e o desenha novamente.
Primeiro, você pode ver que o quadrado parece ter se movido. Mas não se moveu, é claro. Seu canto superior esquerdo ainda está em (20,20) no sistema de coordenadas, mas agora esse ponto está duas vezes mais longe da origem do que estava no sistema de coordenadas original.
Se você quisesse que o quadrado maior começasse no mesmo canto que o quadrado menor, você poderia movê-lo primeiro, e depois fazer a escala:
Você também pode perceber que, em ambos os programas, as retas são mais grossas nos quadrados maiores. Isso não é uma ilusão de ótica — as retas de fato estão duas vezes mais grossas, porque o sistema de coordenadas foi escalado para ter duas vezes seu tamanho. Você poderia alterar
strokeWeight()
de forma explícita para resolver isso, ou evitar o uso de scale()
junto com ele.O comando
scale()
aceita, de forma opcional, dois parâmetros ao invés de apenas um, então você pode escalar as dimensões x e y separadamente. Tente usar scale(3.0, 0.5)
no programa acima para deixar a dimensão x três vezes maior que seu tamanho normal, e a dimensão y com metade do seu tamanho normal.Esse artigo é ma adaptação de Transformações 2D, de J David Eisenberg, usado sob uma licença Creative Commons Attribution-NonCommercial-ShareAlike.
Quer participar da conversa?
- Como assim repetitivo, a cada aula é uma coisa nova, tente pegar tudo de uma só vez, você não aprenderá nada, o que você vai repetindo, vai aprendendo de verdade, aposto que você já sabe o que é fill(), var, rect()... mas talvez outras coisas você não tenha tanto conhecimento assim.(5 votos)
- No desafio a seguir eu fiz
while(scaleF>0.0){
pushMatrix();
translate(200,200);
scale(2.0);
scaleF-=2;
drawBlackCircle(10);
popMatrix();
pushMatrix();
translate(200,200);
scale(2.0);
scaleF-=2;
drawWhiteCircle(10);
popMatrix();
Isso na segunda etapa, mas não tem mensagem de erro e nem mensagem laranja, mas eu não tenho permissão para continuar.(2 votos)- while (scaleF > 0.0){
//black circles
pushMatrix();
translate(width/2,height/2);
scale(scaleF);
scaleF-= decreaseAmt;
drawBlackCircle(diameter);
popMatrix();
pushMatrix();
translate(width/2,height/2);
scale(scaleF);
scaleF-= decreaseAmt;
drawWhiteCircle(diameter);
popMatrix();
}(1 voto)
- éeee por que os números tem q ser tão repetitivos(1 voto)
- Também não consigo realizar os desafios. As dicas realmente estão diferentes... está bem dificil, mas vou continuar.(0 votos)