Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env lua
- local g = 9.81 -- fixme
- local function angle_to_impact(vel, dist, heightdiff)
- local v2 = math.pow(vel, 2)
- local v4 = math.pow(vel, 4)
- local sq = math.sqrt(math.abs(v4 - (g * (g*dist*dist + 2 * heightdiff * v2))))
- local top = 0
- if v2 - sq < 0 then
- top = v2 + sq
- else
- top = v2 - sq
- end
- local bot = g * dist
- return math.atan(top / bot) / math.pi * 180
- end
- local function time_to_impact(vel, dist)
- local v2 = math.pow(vel, 2)
- local v4 = math.pow(vel, 4)
- local minus = v2 - math.sqrt(vel - 4 * v4 * dist)
- local plus = v2 + math.sqrt(vel - 4 * v4 * dist)
- local res
- if minus < 0 then
- res = math.sqrt(plus / (2 * v2))
- else
- res = math.sqrt(minus/ (2 * v2))
- end
- return res
- end
- print "distance = 100m"
- print("v0 = 25m/s, ", angle_to_impact(25, 100, 0))
- print("v0 = 50m/s, ", angle_to_impact(50, 100, 0))
- print("v0 = 75m/s, ", angle_to_impact(75, 100, 0))
- --kobra@pc:~/Desktop$ ./projectiles.lua
- --distance = 100m
- --v0 = 25m, 54.614324981375
- --v0 = 50m, 11.551958535305
- --v0 = 75m, 5.0218718579104
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement