2012-02-08 27 views
5

Estoy tratando de encontrar el nuevo valor de una coordenada si giro alrededor del origen.Cómo rotar el sistema de coordenadas?

Por ejemplo, supongo que tengo el punto (1,1). Si giro el eje de coordenadas 45 grados alrededor del origen, la coordenada transformada sería (0,1,414)

¿Hay alguna manera de hacer esto de manera eficiente en cocos2d, o en objetivo-c? Incluso las respuestas que expliquen las matemáticas para hacer esto serían útiles.

Respuesta

10

Ver esta página: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

Esta es la fórmula:

x '= x cos f - sen y f

y' = y cos f + x sen f

Recuerde que el pecado y el cos toman radios, por lo que tiene que hacer esto:

double x,y; 
double newX,newY; 
double angle; 

//Test values: 
x=1; 
y=1; 
angle = 45; 

double rad = angle*M_PI/180; 

newX = x * cos(rad) - y * sin(rad); 
newY = y * cos(rad) + x * sin(rad); 

No probé esto, por lo que podría haber errores tipográficos ...;)

+0

Gracias por su respuesta. – xcoder

Cuestiones relacionadas