如何每秒旋转一个点

时间:2018-04-24 00:58:14

标签: c++ sdl-2

我有一个观点,我想要像时钟中的秒针一样旋转对应于每一秒钟,它应该每秒旋转6度但是我尝试计时它并且它不需要花费一分钟来完成旋转,这是代码

void rotate(const float& ox, const float& oy, float &x, float &y, const float& rotation) {
float tx = x-ox;
float ty = y-oy;
float nx = tx*cos(rotation) - ty*sin(rotation);
float ny = tx*sin(rotation) + ty*cos(rotation);
x = nx+ox;
y = ny+oy;
}

float origx = 1280/2, origy = 720/2, pntx = origx, pnty = origy-300, rotation=6; // variables

rotate(origx, origy, pntx, pnty, rotation*timer.delta); // update point, timer is an object that gets the delta time between frames of the main loop

1 个答案:

答案 0 :(得分:1)

需要更新变量的值,例如:

  • 您的origx应该是90 deg 0.5π rad
  • 您的origy也应该是90 deg 0.5π rad
  • 每隔一步(rotation)为6 deg 0.033333333333π rad

sincos在参数中取弧度,而不是度数。