【发布时间】:2019-01-01 01:06:31
【问题描述】:
我想将二维图像沿我单击的方向旋转到所有象限。为此,我需要计算相对于对象的角度。我需要 2 个向量。
我尝试过这样做:一个向量将是“点击”点,另一个将是一个“假想”水平向量,它与对象的 X 与“点击”点相同,但 Y 的 Y目的。这将作为我计算与对象角度的第二个向量。
我制作了一个包含 3 个对象的测试程序,看看我是否可以得到这些角度。 b6 是对象,b7 是距离 b6 大约 45º 的“点击点”,b8 是距离 b6 大约 135º 的另一个“点击点”。
这是我正在使用的代码:
#define PI 3.14159265
int main(int argc, char** argv) {
Button b6(100,100);
Button b7(150,50);
Button b8(150,150);
int dot1 = b7.getX() * b7.getX() + b7.getY() * b6.getY();
int det1 = b7.getX() * b6.getY() - b7.getY() * b7.getX();
double angle1 = atan2(det1,dot1)* 180/PI;
int dot2 = b8.getX() * b8.getX() + b8.getY() * b6.getY();
int det2 = b8.getX() * b6.getY() - b8.getY() * b8.getX();
double angle2 = atan2(det2,dot2)* 180/PI;
}
结果与b7和b8的实际位置不对应。 angle1 是 15.25,angle2 是 -11.31。
我是这方面的新手,我不知道我在做什么是不是一团糟。谁能帮我计算这些角度?
【问题讨论】:
-
对我来说,通过看似随机配对的 X 和 Y 坐标相互乘积,我有点不清楚您希望实现什么。如果我想知道两个笛卡尔坐标之间的距离(作为计算它们与轴的相对角度的前奏),我希望使用的数学运算将是减法。
-
你的例子应该减少,
Button类型是完全没有必要的,只是混淆了一些东西。此外,与 SDL 没有任何关系。