Laya 搖桿核心演算法

2021-10-24 19:34:07 字數 2472 閱讀 1280

按下鬆開事件:

按下移動核心**:

斜率   轉弧度  轉角度 (或 正余弦值)

公式 1  斜率 即 點轉 弧度  a ,b 兩點的弧度    math.atan2( b.y -a.y , b.x -a.x )

2 弧度轉角度      弧度 *180/π

3 弧度求正余弦值 math.sin  cos( 弧度 )

知識點補充: 

public static double cos (double d);

返回指定角度的余弦值。

d  double

以弧度計量的角度。

角度(d)必須為弧度。 乘以 math.pi /180 將度轉換為弧度。

也就是說 : 求余弦值,要先從角度轉到弧度  ( 轉換公式: 角度  * π /180 )

然後 cos(弧度 ) 得到余弦值 

斜率:1、math.atan()

math.atan()接受乙個引數:用法如下: 

angel=math.atan(slope) 

angel為乙個角度的弧度值,slope為直線的斜率,是乙個數字,這個數字可以是負的無窮大到正無窮大之間的任何乙個值. 

不過,利用他進行計算比較複雜.因為他的週期性,乙個數字的反正切值不止乙個.例如atan(-1)的值可能是45度,也可能是225度.這樣就是他的週期性,對於正切函式來說,他的週期是180度,所以兩個相差180度的角具有相同的正切和斜率: 

tanθ=tan(θ+180) 

然而,math.atan()只能返回乙個角度值,因此確定他的角度非常的複雜,而且,90度和270度的正切是無窮大,因為除數為零,我們也是比較難以處理的~!因此我們更多的會採用第二個函式. 

2、math.atan2()

math.atan2()接受兩個引數x和y,方法如下: 

angel=math.atan2(y,x) 

x 指定點的 x 座標的數字。 

y 指定點的 y 座標的數字。 

計算出來的結果angel是乙個弧度值,也可以表示相對直角三角形對角的角,其中 x 是臨邊邊長,而 y 是對邊邊長。 

下面我們來測試一下這兩個函式: 

x=math.atan(1)//計算正切值為1的數字對應的弧度值 

trace(x) //輸出乙個弧度值0.785398163397448 

x=180*x/math.pi//轉換為角度值 

trace(x) //輸出45 

x=math.atan2(7,7) 

trace(x)//輸出0.785398163397448 

x=180*x/math.pi//轉換為角度值 

trace(x)//輸出45 

x=math.atan2(7,-7) 

trace(x)2.35619449019234 

x=180*x/math.pi//轉換為角度值 

trace(x)135 

x=math.atan2(-7,7) 

trace(x)//輸出-0.785398163397448 

x=180*x/math.pi//轉換為角度值 

trace(x)//輸出-45 

x=math.atan2(-7,-7) 

trace(x)//輸出-2.35619449019234 

x=180*x/math.pi//轉換為角度值 

trace(x)//輸出-135 

//從這些測試可以看出,通過座標系的自動調整,我們可以很自由的計算出處於不同象限的位置相對應的角度. 

3、計算兩點間連線的傾斜角.

這種方法非常的有用. 

math.atan2()函式返回點(x,y)和原點(0,0)之間直線的傾斜角.那麼如何計算任意兩點間直線的傾斜角呢?只需要將兩點x,y座標分別相減得到乙個新的點(x2-x1,y2-y1).然後利用他求出角度就可以了.使用下面的乙個轉換可以實現計算出兩點間連線的夾角. 

math.atan2(y2-y1,x2-x1) 

不過這樣我們得到的是乙個弧度值,在一般情況下我們需要把它轉換為乙個角度. 

下面我們用一段**來測試一下這樣的轉換. 

//測試,計算點(3,3)和(5,5)構成的連線的夾角 

x=math.atan2(5-3,5-3) 

trace(x)//輸出0.785398163397448 

x=x*180/math.pi//轉換為角度 

trace(x)//輸出45。

掃 雷 核 心 算 法

定義 在該案例中我們要實現類似於windows掃雷遊戲程式的核心功能,我們將掃雷遊戲的核心功能分為以下4個模組 1,隨機布雷模組 在該模組中,我們要為掃雷遊戲隨機的布置地雷,掃雷遊戲的布雷面板可以用二維int陣列表示,若某位置為地雷,則該位置用數字 1表示,若該位置不是地雷,則暫時用數字0表示。我們...

rsync 的核心演算法

rsync是unix linux下同步檔案的乙個高效演算法,它能同步更新兩處計算機的檔案與目錄,並適當利用查詢檔案中的不同塊以減少資料傳輸。rsync中一項與其他大部分類似程式或協定中所未見的重要特性是映象是只對有變更的部分進行傳送。rsync可拷貝 顯示目錄屬性,以及拷貝檔案,並可選擇性的壓縮以及...

rsync 的核心演算法

rsync是unix linux下同步檔案的乙個高效演算法,它能同步更新兩處計算機的檔案與目錄,並適當利用查詢檔案中的不同塊以減少資料傳輸。rsync中一項與其他大部分類似程式或協定中所未見的重要特性是映象是只對有變更的部分進行傳送。rsync可拷貝 顯示目錄屬性,以及拷貝檔案,並可選擇性的壓縮以及...