[C con Clase] consulta

Steven Davidson srd4121 en njit.edu
Vie Nov 6 16:09:51 CET 2009


Hola Sheyla,

2009/11/6 marbella paredes <lamamix100pre en hotmail.com>

> 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.
>
>
Típicamente, la operación o transformación de la rotación requiere un ángulo
que debes proporcionar, aparte de la información del punto o vértice. Los
cálculos son los siguientes:

x' = x * cos(a) - y * sen(a)
 y' = x * sen(a) + y * cos(a)

donde (x',y') es el punto rotado a partir del ángulo, a, del punto original
(x,y). Esta rotación se realiza por el origen en el sentido contrario al de
las agujas del reloj. Recuerda que estos cálculos usan radianes, y por tanto
el ángulo, a, debe estar en radianes para que las funciones trigonométricas
funcionen correctamente, valga la redundancia.

Como ha mencionado Jorge, que se me ha adelantado mientras te respondía,
tienes que aplicar estas fórmulas a cada vértices de tu polígono.

Si quieres rotar el polígono por otro punto que no sea el origen, entonces
acabarás aplicando varias transformaciones en serie. La secuencia es la
siguiente:

T(-p,-q) R(a) T(p,q)

donde T se refiere a la traslación y R a la rotación. Aquí queremos rotar
por el punto (p,q). Como puedes ver, desplazamos cualquier punto por
(-p,-q), que viene a ser casi lo mismo que mudar todo a otro origen descrito
por (p,q). Luego rotamos, para luego volver a mudar todo por (p,q).


Espero que esto te sirva.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091106/2ffc5910/attachment.html>


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