以前某个项目有一个功能需要手指滑动一个饼图。当时搬高中数学公式,并大量查询网络,花了两个小时把那个功能的数学算法搞定。
今天在看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)
网名:@"老舟"
兴趣:@"影音,阅读"
动态:@"系统架构设计,Android通信模块开发"
网址:@"http://kilonet.cnblogs.com"
签名:@"--------------------------------------------------
Stay Hungry , Stay Foolish
求 知 若 渴,处 事 若 愚
--------------------------------------------------"
]; // Never Release