C/Visual C - cubo rotar

 
Vista:

cubo rotar

Publicado por carlos caponi (5 intervenciones) el 13/08/2001 22:51:05
Hola de antemano gracias por su atencion.
estoy tratando de hacer un programa ( dibujar un cubo que rote en cualquiera de sus ejes), pero no se como hacer que rote....
por favor si alguien tiene informacion sobre esto favor de sacarme de la duda...
espero su rapida respuesta....
gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Transformaciones en tres dimensiones

Publicado por Fabián Sierra Carvajal (50 intervenciones) el 15/08/2001 04:06:11
Me imagino que estás usando matemáticas para tres dimensiones... Si no es así, aquí van algunos elementos.
Deberías definir para cada vértice del cubo su posición en 3 dimensiones, es decir, con tres puntos para cada uno. Un cubo de arista 2 con centro en 0,0,0 definiría su cara inferior como:
1,-1,1
1,-1,-1
-1,-1,1
-1,-1,-1
Lo usual es guardar cada punto en una estructura y hacer un arreglo de estructuras que exprese el cubo en 3 dimensiones.
Para dibujar el cubo, basta con transformar las coordenadas 3d en coordenadas 2d que se puedan dibujar en una pantalla. Una fórmula para pasar de 3d a 2d es
x = x / z;
y = y / z;
También es usual guardar estos valores en una matriz de estructuras.
Para rotar el cubo, debes rotar cada punto en 3d antes de pasarlo a 2d. Para eso se usa algo de trigonometría.
Imagina el punto x,y como perteneciendo a un cuadrado en 2 d con centro en 0,0. Si rotamos el cuadrado n grados, la distancia d del punto al centro permanecerá constante. La distancia d es la hipotenusa de un triángulo rectángulo de lados x e y. Siempre puedes, por lo tanto, calcular x e y dados la distancia d y el valor del ángulo que forma con el eje x. Como seno(angulo) == x / hipotenusa, entonces x = sin(angulo) * hipotenusa, e y=cos(angulo) * hipotenusa. Esto significa que si tienes x e y originales, sabes la hipotenusa (por Pitágoras), y basta dar un ángulo de rotación para encontrar x e y en su nueva posición.
Te debiera resultar fácil trasladar las fórmulas de 2d a 3d.
¡Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar