角度方向
Direction to angle
本文关键字:方向 更新时间:2023-10-16
我不是很擅长数学(而且我从来没有),我有一个问题:我试图让精灵总是旋转到鼠标光标。这就是我所拥有的:
// mx is mouse X and my is mouse y
double rotate = (atan2(my, mx) * PI);
// Set rotation takes rotation in degrees
ship.SetRotation( rad2deg(rotate) );
其中deg2rad
函数是:
double rad2deg(double rad)
{
double deg = 0;
deg = rad * (180/M_PI);
return deg;
}
不幸的是,它不起作用。这艘船旋转得很奇怪(真的很难定义)。而且我没有任何想法来解决这个问题。
我正在研究SFML,SetRotation
需要学位。
提前谢谢。
您需要定义相对于某个点的旋转。目前,您正在相对于屏幕的一角进行操作,这只会给您90度,并且可能不是您想要的。您可能希望相对于精灵的位置或相对于屏幕中心进行旋转,例如
// define centre of screen
const int Y0 = SCREEN_HEIGHT / 2;
const int X0 = SCREEN_WIDTH / 2;
// get rotation angle of mouse location relative to centre of screen
double rotate = (float) (atan2(Y0 - my), ((mx - X0));
[正如其他人所指出的,例如@duffymo,您可能也有 atan2 转置的参数,所以我也进行了此更改。
看来 atan2 的参数顺序错误。而且您传递给atan2
的值应该是对象的相对鼠标位置。所以如果对象位置是 ox
、 oy
,那么你应该使用 atan2(my-oy, mx-ox)
。
我想知道你是否有 atan2 的论据颠倒过来。 典型的顺序是 y 先,然后是 x。 您确定您知道要传递给该方法的内容吗?
"不工作"和"奇怪"不能帮助我们了解问题所在,因此很难帮助您。
相关文章:
- 使用Unreal C++获取VR耳机的世界位置/方向
- 在C++中向零方向近似的最佳方法
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- OpenVR:向视图方向移动
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 带有枚举方向/类型的气泡排序结构数组
- OpenGL通常"Up"方向?
- 定义/预设NURBS起点和终点的方向
- 如何按另一个向量的方向调整一个向量?
- 粒子系统:所有粒子都朝同一方向运动
- C++指标评价方向
- SFML - 弹丸以不同的方向减速
- C++位移位在相反方向上具有相同的常量,结果不同,代码更改很小
- 如何在相对于观看方向的地形中移动
- RCPP 函数,用于在 4 个方向上生成随机游走
- "in"和"out"在参数方向上是什么意思?
- 使用libgpiod,如何动态切换请求行的方向
- OpenGL:在那个方向上旋转和移动
- Lambda 函数在特征中按元素方向
- 给定方向和位置如何使用 GLM 计算旋转矩阵