Jump to content
Sign in to follow this  
alves077

[OpenGL] Transformações

Recommended Posts

alves077

Boa tarde,

Tenho um projeto que tenho que a partir de vários objetos tenho q lhe aplicar transformações geométricas, tenho um caso que não estou a conseguir fazer o pretendido.

Em que tenho um triangulo com os pontos A(0,0), B(5,5),C(5,0), e outro triangulo dentro deste mas com uma altura menor

A(0,0), B(5,X),C(5,0). x<5

E queria que o resultado final fosse uma simetria de um novo triangulo com lados A(0,0), B(M,M), C(X,-M), em relação ao eixo do x.

Não sei se me faço entender, mas queria como se o ponto C do triangulo se "expande-se" para o lado negativo de y. Sabem que rotações/translações/escalas preciso fazer para la chegar?

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
HappyHippyHippo

matrix de rotação em relação ao eixo dos X :

1      0      0      0
0   cos(a) -sin(a)   0
0   sin(a)  cos(a)   0
0      0      0      1

matrix de escala:

sX  0   0   0
0   sY  0   0
0   0   sZ  0
0   0   0   1


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alves077

Hm, percebo a ideia mas acho que não faria exatamente o que pretendo, consegui arranjar uma imagem que é muito

parecida com o que pretendo:

https://s8.postimg.cc/6v0crse39/test.png

E neste caso uma rotação e escala acho que não chega, porque a dimensão final dos triângulos não fica como esperado.

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
HappyHippyHippo

E neste caso uma rotação e escala acho que não chega, porque a dimensão final dos triângulos não fica como esperado.

exactamente errado.

a rotação e/ou escala servem perfeitamente

se não tiveres alteração do ângulo no ponto (0,0), então a rotação de 180 grau em torno do eixo dos X é mais do que suficiente.

se tiveres a alteração do ângulo, necessitas de fazer o seguinte:

- saber a proporção de B para b que é dada pela divisão : b/B

- inverter o sinal na operação de escala, ficando com a matrix de transformação:

[-b/B 0 0 0
  0  1 0 0
  0  0 1 0
  0  0 0 1]

isto (pelo incrível que pareça), vai dar a transformação dos pontos : A=>A' C=>D' B=>C'

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alves077

Isto é uma rotação de 180º e depois uma escala para ficar de tamanho D' no x e de tamanho m no y, segundo nos diz a imagem que aqui coloquei?

Obrigado pela atenção,

alves077

Share this post


Link to post
Share on other sites
HappyHippyHippo

faz as contas, aplica a matrix de transformação de escala que te apresentei a todos os pontos e verifica o resultado

depois das contas, desenha os pontos e diz se o resultado é o esperado ou não.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.