cocos lua 獲取點到直線距離

最近做一款檯球遊戲,需要做這種效果,所以需要求的彩色球到直線的距離,高中數學幾乎快忘光了。

Google了一波,挖出了幾個數學公式。


我的手中有這幾個數據:

1。直線繞X軸正方向的角度,注意,這裏cocos引擎和數學系的的直角座標反過來的,所以在傳參數的時候要先把角度轉換成數學座標系的角度。(rotate,這裏使用的時候角度要轉爲度數)

2。直線上的一點,可以根據這個計算出直線的方程(whitePos)(whitePos.x,whitePos.y)

3。目標點的座標(ballPos)(ballPos.x,ballPos.y)

4。小球的半徑(這個只是我做的遊戲有用)(radis)

*注意這裏座標一定要轉換爲一個節點下的座標,或者全部轉爲世界座標也可以,convertToWorldSpace或者convertToNodeSpace


給出我的代碼:

--點到直線最短距離
function help.getShortestDistanceBetweenPointAndLine(rotate,ballPos,whitePos,radius)
    local A,B,C = help.getLineEquation(rotate / 180 * math.pi, whitePos)
    local _verticalLine = math.abs(A*ballPos.x+B*ballPos.y+C)/math.sqrt(A*A+B*B)
    return math.sqrt(4*radius*radius-_verticalLine*_verticalLine)
end

--獲取射線的方程式 return y=kx+b
function help.getLineEquation(rotate, whitePos)
    local A = -math.tan(rotate)
    local B = 1
    local C = math.tan(rotate)*whitePos.x - whitePos.y
    return A,B,C
end
這裏rotatesh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章