Aplicando Transforma��es Geom�tricas
Para aplicar transforma��es geom�tricas em um objeto da SmallVR �
preciso antes obter um ponteiro para este objeto atrav�s do m�todo FindChildObject, conforme o exemplo a seguir.
SmVR_CGeometricObject *temp;
temp = RootObject->FindChildObject("Cubo");
Copie este trecho de c�digo para o in�cio da fun��o void specialFunc (int key, int x, int y) que trata os eventos de teclas especiais.
A seguir, � preciso aplicar a
transforma��o desejada, utilizando o ponteiro para o objeto e um dos
m�todos de transforma��es geom�tricas dispon�veis na SmallVR.
case GLUT_KEY_RIGHT:
temp->RotateBy(10, 0,1,0);
glutPostRedisplay(); // for�a o redesenho da tela
break;
Veja na tabela a seguir as outras transforam��es geom�tricas dispon�veis na classe SmVR_CGeometricObject.
M�todo
|
Funcionalidade
|
ScaleBy(float
ex,
float ey,
float ez) |
aplica
uma escala
(ex,ey,ez)
no objeto usando o SCL do objeto |
ScaleBy(SmVR_CPoint
p) |
aplica
uma escala
no objeto
usando o SCL do objeto. As componentes X,Y,Z do ponto 'p' definem os
fatores
de escala a serem aplicados |
RotateBy(float
angle, float
ax, float ay, float az) |
aplica
uma
rota��o
de "angle" graus ao redor do vetor definido por (ax,ay,az), no SCL do
objeto |
RotateBy(float
angle, SmVR_CPoint
p) |
aplica
uma
rota��o
de "angle" graus ao redor do vetor definido por p, no SCL do objeto |
As transla��es, por sua
vez,
s�o sempre aplicadas no sistema de coordenadas do pai do objeto,
conforme a tabela abaixo.
M�todo
|
Funcionalidade
|
TranslateBy(float
tx, float
ty, float tz) |
aplica
uma
transla��o(tx,ty,tz)
no objeto usando como refer�ncia o sistema de coodenadas do pai
do objeto |
TranslateBy(SmVR_CPoint
p) |
aplica
uma
transla��o
no objeto usando como refer�ncia o sistema de coodenadas do pai
do
objeto. O ponto P
funciona
como um vetor que define a transla��o |
Veja na p�gina sobre a montagem de cen�rios, outros detalhes sobre as transforma��es geom�tricas dispon�veis na SmallVR.
Criando Novos Objetos
Adicione um novo objeto na cena colocando o trecho abaixo logo ap�s a cria��o do primeiro cubo.
Note que estamos utilizando a mesma rotina de desenho para os dois objetos.
// Create a new object
TestObject = new SmVR_CGeometricObject("Cubo2", DrawTest);
// Add the object to the scene
RootObject->AddChild(TestObject);