[C con Clase] consulta

Jorge García jorgeantonio49 en gmail.com
Vie Nov 6 15:32:58 CET 2009


Hola la manera como piensas rotar tu polígono no es la as adecuada.
Según entiendo tu no quieres el ángulo, mas bien tienes el ángulo y lo
que quieres rotar es el polígono ese ángulo.
La mejor manera de hacer eso es multiplicar cada vértice del poligono
por una matriz de rotación. No se si estés ocupando arreglos o algun
tipo definido por ti para guardar los puntos, pero te lo pongo de manera
un poco inocente y espero te sirva:

AnguloRot = transformaEnRadianes(angulo);

Xrot = cos(anguloRot) * x - sin(anguloRot) * y;
Yrot = sin(anguloRot) * x + cos(anguloRot) * y;

En donde el angulo que quieres rotar lo tienes en angulo, y las
coordenadas de un vertice del polígono son x y y Y los resultados Xrot y
Yrot son las nuevas coordenadas del vértice después de rotar el polígono

Es decir si tu polígono es un pentágono, tendrás que hacer la operación
de arriba cinco veces una por cada vértice (x, y) del polígono.

Tambien te recuerdo que esta rotacion es respecto al origen del sistema
de coordenadas, por que si lo que quieres es rotar el poligono respecto
a un centro de rotacion local, tendras que hacerlo en 3 pasos.

1) Traslada tu polígono de manera que el centro de rotacion local,
coincida con el del sistema de coordenadas.
2) Aplica la rotación con las ecuaciones de arriba
3) regresa tu poligono a su posicion original

Si no te queda muy claro te recomiendo que revises un poco acerca de
Rotación en gráficas por ejemplo aqui:
http://www.cubik.org/mirrors/taligent/Docs/books/GS/GS_27.html

El vie, 06-11-2009 a las 04:41 +0000, marbella paredes escribió:
> buenos dias necesito hacer un poligono en modo grafico pero debo poder
> darle traslacion, rotacion y escalacion a demas debe estar rellenado
> de un color, bien ya tengo el poligono y lo puedo tras ladar en la
> pantalla segun lo desee el usuario tambien lo cuedo escalar tanto en
> aumento como en reduccion, pero aun no consigo poder rotarlo ni
> llenarlo de un color, para rotar estube revisando y tengo que hacerlo
> con funciones trigonometricas y e ahy mi problema por ejemplo 
> senº=lado opuesto =35 =0.1813
>         hipotenusa     193
> 
> senº=lado opuesto =190 =0.9844
>         hipotenusa     193
> y lo que necesito es obtener un angulo segun lei debo sacar el
> arcoseno entonces escribo asin(0.1813);
> y tampoco meda un angulo, y necesito que la funcion lo calcule para
> hacer en nuevo calculo y obtener los proximos puntos de la rotacion el
> unico angulo que tengo es el angulo recto, faltarian los otros dos.
> angulo=90 
> x=190;
> y=35;
> h=193;
> 
> espero haberme explicado bien y si alguien me puede ayudar seria mejor
> gracias de antemano.
> atentamente.
> 
> sheyla
> 
> 
> ______________________________________________________________________
> Connect to the next generation of MSN Messenger  Get it now! 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ





Más información sobre la lista de distribución Cconclase