Android之三角函數(shù)

在Android里自定義view的時候,會用到三角函數(shù),主要用到 java.lang.Math里的函數(shù):

E = 2.7182818284590452354
PI = 3.14159265358979323846
Math.pow(double a, double b); a的b次方
Math.sqrt(double a);a開根號
Math.sin(Math.PI/2);90 度的正弦值
Math.cos(0);0度的余弦值
Math.tan(Math.PI/3);60度的正切值
Math.atan(1);1的反正切值
Math.PI;π
Math.toRadians(double angdeg) 角度轉(zhuǎn)化為弧度
Math.toDegrees(Math.PI/2);弧度轉(zhuǎn)化為角度 (π/2的角度值)
Math.ceil() 大于等于( >= )給定參數(shù)的的最小整數(shù)
Math.abs() 求絕對值
Math.floor() 求小于等于某個數(shù)的最大整數(shù)
Math.round() 四舍五入

關于atan2()這個函數(shù)重點講一下:

cx,cy為原點(這里指畫圓時的圓心),x,y為當前點。這里api里參數(shù)是先y后x,但其實是先x后y,而且在Android里還應該是cy-y,因為在數(shù)學坐標系里x軸以上的點的y值肯定是大于x軸以下的點的y值的(位置在上的點的y值大于位置在下邊的點的y值),但在Android坐標系里下邊的點的y值是大于上邊的點的y值的,

atan2(double y, double x)
Math.atan2(x - cx, cy - y)

atan()和atan2()的區(qū)別

atan(double a)接受一個參數(shù),但是這里有個問題,atan(-1)可以是45°和225°的弧度值,這就坑壁了

atan2(double y, double x)接受兩個參數(shù),參考上邊:在數(shù)學坐標系里是當前點與圓心連線和y軸正方形的夾角的弧度值,當然在Android坐標系里就是當前點與圓心連線與y軸負方向的夾角的弧度值。所以在Android坐標系里,通過atan2()求出的弧度值,如果參與cos()計算,正負值都需要時,需要Math.atan2(x - cx, cy - y)-Math.PI/2;因為cos在-π/2和π/2之間都是正數(shù),但在Android坐標系里通過atan2求得的弧度值的cos,我們需要在0和π之間都取正數(shù)。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容