2012-02-08 17 views
5

Sto cercando di trovare il nuovo valore di una coordinata se ruoto attorno all'origine.Come ruotare il sistema di coordinate?

Ad esempio, supponiamo di avere il punto (1,1). Se ruoto l'asse coordinato di 45 gradi intorno all'origine, la coordinata trasformata sarebbe (0,1.414)

Esiste un modo per farlo in modo efficace in cocos2d o in obiettivo-c? Anche le risposte che spiegano la matematica per fare questo sarebbe utile.

risposta

10

Vedere questa pagina: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

Questa è la formula:

x '= x cos f - peccato y f

y' = y cos f + x peccato f

Ricorda che peccato e cos prendono radianti, quindi devi fare così:

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); 

Non ho provato questo, quindi potrebbero esserci refusi ...;)

+0

Grazie per la risposta. – xcoder

Problemi correlati