2013-05-20 133 views
1

我需要一些帮助计算点的角度: enter image description hereC++的角度,三角

我需要计算从点(0,0)的角度以从图像中提取点。 1将是0 *,2是大约40-44 *等

我的问题是,atan2显示不正确的值。 当前ATAN2的输出是:

1:41.867535 2:64.653824 3:52.915009 4:30.375608 5:13.328092 

如何从点0,0计算呢?我无法使用任何非标准库。

我还在做错事。我想:

arrow1 = (M_PI - atan2(y, x) * (180/M_PI); 

输出:

1: 131.867538 2: 154.653824 3: 142.915009 4: 120.375610 5: 103.328094 

和:

arrow1 = (M_PI - atan2(y, -x) * (180/M_PI); 

输出:

1: 48.132465 2: 25.346176 3: 37.084991 4: 59.624393 5: 76.671906 
+0

请显示你的代码,以便我们可以帮你弄清楚。 – Escualo

+0

现有的代码工作正常(找到图像的部分等是好的)。我的问题是缺少计算角度的代码。输出来自简单:arrow1 = atan2(x,y)* 180/M_PI; – user2336450

回答

4

的角度atan2(deltaY, deltaX)返回将是角度,在弧度,从X轴逆时针秒。

您目前正在使用arrow1 = atan2(x,y) *180/M_PI;,所以您需要将其转换为使用(y,x),然后再切换,以便从-X顺时针旋转角度,而不是从+ X逆时针旋转。

这意味着点1的角度(如果您将其作为atan2(-1, 0)喂入)将为180度。为了达到你想要的角度,它应该是:

double angleFromX = atan2(deltaY, deltaX); 
double angle = M_PI - angleFromX; 
double angleInDegrees = 180 * angle/M_PI; 
+0

另外,不要忘记添加检查对'x == 0'。 – cabbagery