2014-03-31 121 views
1

我正在用Perl中的atan2()函数计算AB段与水平轴的夹角。 Perl文档说Perl atan2值超出范围

atan2 Y,X 返回范围-PI到PI中的Y/X的反正切。

以下子程序:

sub computeAngle($$$$){ 
my($x1_, $y1_, $x2_, $y2_) = @_; 
$result = 0; 

$result = atan2($y2_-$y1_, $x2_-$x1_)*360/3.14159265359; 

print " Angle= $result°\n"; 
return $result; 
} 

可生产的间隔以外的值:

0 0 -30.7933862796053 216.100103110075角度= 196.219639131902°

0 0 -81.245545537211 -11.7299860790372角度= - 343.569155014717°

这是怎么发生的?

+2

当你转换成弧度度应该由180乘,不是360:'... * 180/3.14159265359'; –

+0

你是德米特里。请回答这个问题,以便我可以评价它作为答案。 –

回答

4

您的转换不正确;你应该,不乘:

$result = atan2($y2_-$y1_, $x2_-$x1_)*180/3.14159265359;