Как повернуть систему координат? - PullRequest
5 голосов
/ 08 февраля 2012

Я пытаюсь найти новое значение координаты, если я вращаюсь вокруг начала координат.

Например, скажем, у меня есть точка (1,1). Если я поверну ось координат на 45 градусов вокруг начала координат, преобразованная координата будет (0,1,414)

Есть ли способ сделать это эффективно в cocos2d или в target-c? Даже ответы, объясняющие математику, чтобы сделать это, были бы полезны.

1 Ответ

10 голосов
/ 08 февраля 2012

См. Эту страницу: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

Это формула:

x '= x cos f - y sin f

y' = y cos f +x sin f

Помните, что sin и 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);

Я не проверял это, поэтому могут быть опечатки ...;)

...