天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

        以前某个项目有一个功能需要手指滑动一个饼图。当时搬高中数学公式,并大量查询网络,花了两个小时把那个功能的数学算法搞定。

        今天在看android下一段源码时,突然发现一个数学函数:Math.atan2 ,一下子羞愧难当,原本一个简单的数学函数,我花了两个小时。。。。。。

       知耻而后勇,把这个函数好好熟悉一下:

 

Java:

public static native double atan2(double paramDouble1, double paramDouble2);

paramDouble1 y坐标

paramDouble2 x坐标

 

C#:

public static double Atan2 (
    double y,
    double x
)

 

参数

y

点的 y 坐标。

x

点的 x 坐标。

返回值

θ,以弧度为单位,满足 -πθπ,且 tan(θ) = y / x,其中 (x, y) 是笛卡儿平面中的点。请看下面:

  • 如果 (x, y) 在第 1 象限,则 0 < θ < π/2。

  • 如果 (x, y) 在第 2 象限,则 π/2 < θπ

  • 如果 (x, y) 在第 3 象限,则 -π < θ < -π/2。

  • 如果 (x, y) 在第 4 象限,则 -π/2 < θ < 0。

备注

返回值为笛卡尔平面中的角度,该角度由 x 轴和起点为原点 (0,0)、终点为 ( x,y ) 的向量构成。

 

 

 

根据返回的θ,可以计算其角度:θ*(180 / Math.PI) 

 

应用:计算两点间连线的倾斜角.
Math.atan2()函数返回点(x,y)和原点(0,0)之间直线的倾斜角.那么如何计算任意两点间直线的倾斜角呢?只需要将两点x,y坐标分别相减得到一个新的点(x2-x1,y2-y1).然后利用他求出角度就可以了.使用下面的一个转换可以实现计算出两点间连线的夹角.
Math.atan2(y2-y1,x2-x1)

posted on 2010-12-16 14:39  老舟  阅读(3236)  评论(0编辑  收藏  举报