20/05/2015, 10:05
|
| | Fecha de Ingreso: junio-2010 Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 7 meses Puntos: 73 | |
Respuesta: Rotacion con radianes Supongamos que tengo un punto P en las coordenadas (6,3), es decir, P(6,3).
Para sus coordenadas polares (pongo los ángulos en grados), tenemos:
r = sqrt(x^2+y^2) = sqrt(6^2+3^2) = sqrt(36+9) = sqrt(45) = 6.708
A = atan(y/x) = atan(3/6) = atan(0.5) = 26.565
es decir, las coordenadas polares de ese punto son un segmento de longitud 6.708 y un ángulo respecto del eje horizontal de 26.565 grados, o sea, P(6.708,26.565).
Supongamos que quiero girarlo un ángulo de 30 grados en sentido contrario a las agujas del reloj (por convenio, este es el sentido positivo de giro). El nuevo ángulo será:
B = A+30 = 56.565
Las nuevas coordenadas polares de P serán P(6.708, 56.565).
Pasando a cartesianas:
x = r*cos(B) = 6.708*cos(56.565) = 3.696
y = r*sin(B) = 6.708*sin(56.565) = 5.598
En coordenadas cartesianas, tenemos P(3.696, 5.598).
Estos cálculos están hechos, lógicamente, con números en coma flotante. Para pasar a coordenadas en la pantalla, tienes que pasarlos a entero con el redondeo que corresponda. También, como ya te dije, tienes que tener en cuenta que el punto (0,0) de la pantalla es la esquina superior izquierda, con lo que las coordenadas horizontales crecen de izquierda a derecha (normal), pero las verticales crecen de arriba hacia abajo (al contrario de lo normal), con lo que tendrás que recalcular las coordenadas verticales de lo que vayas a trazar. También debes tener en cuenta la traslación del origen de coordenadas, si no lo vas a tener en la esquina superior izquierda (o inferior izquierda si aplicas la inversión del eje vertical). Haz todos los cálculos en coma flotante (float o double), a las constantes que utilices añádeles un punto decimal para forzar a que te las evalúe como números en coma flotante (si no, en alguna ocasión podría aplivcar aritmética entera y trastocarte por completo el resultado). |