gpt4 book ai didi

c++ - 一个点绕另一个点旋转的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:56 25 4
gpt4 key购买 nike

所以我这里有一个数学函数,它应该返回一个旋转的点,并获取一个原点,围绕(原点)旋转的点和旋转它的弧度。

但是它只以一半的速度旋转(又名 180 度运动 = 90 度旋转)

sf::Vector2f RotatePoint(sf::Vector2f origin, sf::Vector2f point, float radian) {   
float s = sin(radian);
float c = cos(radian);

// translate point back to origin:
point.x -= origin.x;
point.y -= origin.y;

// rotate point
float xnew = point.x * c - point.y * s;
float ynew = point.x * s + point.y * c;

// translate point back to global coords:
sf::Vector2f TranslatedPoint;
TranslatedPoint.x = xnew + origin.x;
TranslatedPoint.y = ynew + origin.y;

return TranslatedPoint;
}

最佳答案

我觉得这个功能没问题。如果您想知道,旋转只是将一个 vector 乘以二维欧几里得旋转矩阵 (http://en.wikipedia.org/wiki/Rotation_matrix)。我能想到的唯一错误是对函数用法的一些误解。例如。即 2*PI 弧度 = 360 度,或者逆时针旋转。

关于c++ - 一个点绕另一个点旋转的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com