2012-02-08 51 views
5

Tôi đang cố gắng tìm giá trị mới của một tọa độ nếu tôi xoay quanh gốc.Làm thế nào để xoay hệ tọa độ?

Ví dụ: giả sử tôi có điểm (1,1). Nếu tôi xoay trục tọa độ 45 độ xung quanh gốc, tọa độ được chuyển đổi sẽ là (0,1.414)

Có cách nào để thực hiện điều này một cách hiệu quả trong cocos2d hoặc trong mục tiêu-c không? Ngay cả câu trả lời giải thích toán học để làm điều này sẽ hữu ích.

Trả lời

10

Xem trang này: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

Đây là công thức:

x '= x cos f - tội lỗi y f

y' = y cos f + x sin f

Hãy nhớ rằng tội lỗi và cos mất radian, vì vậy bạn phải làm như thế này:

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

Tôi không kiểm tra điều này, vì vậy có thể có lỗi chính tả ...;)

+0

Cảm ơn câu trả lời của bạn. – xcoder

Các vấn đề liên quan