如何旋转坐标系?

时间:2012-02-08 08:53:25

标签: objective-c cocos2d-iphone transform rotation coordinate

如果我围绕原点旋转,我试图找到坐标的新值。

例如,假设我有点(1,1)。 如果我将坐标轴围绕原点旋转45度,则变换后的坐标将为(0,1.414)

有没有办法在cocos2d或objective-c中有效地做到这一点? 即使是解释数学的答案也会有所帮助。

1 个答案:

答案 0 :(得分:10)

查看此页面: 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);

我没有对此进行测试,因此可能存在错别字...;)