2012-02-08 23 views
5

Próbuję znaleźć nową wartość współrzędnej, jeśli obrót wokół pochodzenia.Jak obracać układ współrzędnych?

Na przykład powiedz, że mam punkt (1,1). Jeśli obrócę oś współrzędnych o 45 stopni wokół punktu początkowego, przekształcona współrzędna będzie (0,1.414)

Czy istnieje sposób, aby zrobić to skutecznie w cocos2d, lub w obiektyw-c? Pomocne byłyby nawet odpowiedzi wyjaśniające matematykę.

Odpowiedz

10

obejrzeć na stronie http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

ta jest wzorem:

x '= x cos f - y sin f

y' = y cos f + x sin f

Pamiętaj, że grzech i cos przyjmuje radiany, więc musisz zrobić tak:

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

Nie przetestowałem tego, więc mogą pojawić się literówki ...;)

+0

Dziękuję za odpowiedź. – xcoder