Bem, na última quinta feira foi a data de entrega do SiVOP. Ele está disponível aqui. Para executar, “python Sivop.py arquivo.obj”.
Pouco antes de entregar ainda faltava um requisito essencial, que ao redimensionar a janela o objeto não fosse “deformado”, mantendo a forma e tamanho original. Para isso, tive que ajustar o campo de visão (ângulo de visão vertical) de acordo com a altura da janela, usando senos e cossenos.
Informações iniciais:
- Altura inicial da janela (h)
- Ângulo inicial (“Teta”)
Imaginando a câmera como centro de uma esfera, podemos achar a hipotenusa (r) de um triângulo retângulo que tem a altura inicial como cateto oposto do ângulo inicial. Essa hipotenusa seria considerada o raio dessa esfera. Dessa forma, podemos achar o ângulo equivalente para uma nova altura, que seria um novo cateto oposto. Em python (que usei no SiVOP):
- self.hypo = 400/sin(pi/12) # Angulo de 15 graus e altura inicial de 400
- gluPerspective(self.calcAngle(), float(w)/h, 0.1, 500.0) # ajusta a câmera
E self.calcAngle():
- return degrees(asin(self.height/self.hypo))
Pra quem acha que matemática e cálculo não serve pra nada…..
E mto ruim matematica, mas a matematica esta em tdo