glitchdetector icon

FiveM Lua Trig

glitchdetector | PRO | 08/08/20 07:42:42 PM UTC (Edited) | 0 ⭐ | 435 👁️ | Never ⏰ | []
Lua |

1.48 KB

|

None

|

0 👍

/

0 👎

function GetDistanceToPointBetweenCoords(pos, start, stop)
    local startDist, stopDist, length = #(pos - start), #(pos - stop), #(start - stop)
    return GetDistanceToLine(startDist, stopDist, length)
end
 
function GetDistanceToPointAlongCoords(pos, start, stop)
    local startDist, stopDist, length = #(pos - start), #(pos - stop), #(start - stop)
    return GetDistanceToLineInf(startDist, stopDist, length)
end
 
function GetDistanceToLine(startDist, stopDist, length)
    if math.max(startDist, stopDist) > length then
        return math.min(startDist, stopDist)
    end
    return GetDistanceToLineInf(startDist, stopDist, length)
end
 
function GetDistanceToLineInf(startDist, stopDist, length)
    local s = (1/2) * (startDist + stopDist + length)
    local area = math.sqrt(s * (s - startDist) * (s - stopDist) * (s - length))
    return area / (length / 2)
end
 
-- Get angle between two coords via an origin point
-- https://i.imgur.com/2GVvt5I.png
-- Returns a negative value is target is on the left side of the line
function CalculateAngleBetweenPoints(origin, line, target)
    local p1x, p1y = origin.x, origin.y
    local p2x, p2y = line.x, line.y
    local p3x, p3y = target.x, target.y
    local numerator = p2y*(p1x-p3x)+p1y*(p3x-p2x)+p3y*(p2x-p1x)
    local denominator = (p2x-p1x)*(p1x-p3x)+(p2y-p1y)*(p1y-p3y)
    local ratio = numerator / denominator
    local anglerad = math.atan(ratio)
    local angledeg = (anglerad*180)/math.pi
    return angledeg
end
 

Comments