Advertisement
HugoBDesigner

Angles

Mar 9th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.04 KB | None | 0 0
  1. function love.load()
  2.     px = 400
  3.     py = 300
  4.    
  5.     angle, target = false, 0
  6.     speed = .5
  7.     a = 0
  8.    
  9.     love.graphics.setPointSize(4)
  10. end
  11.  
  12. function love.update(dt)
  13.     local x, y = love.mouse.getPosition()
  14.    
  15.     --If left mouse is down, stop tracking angle
  16.     local trackangle = not love.mouse.isDown(1)
  17.    
  18.     target = math.atan2(y-py, x-px)
  19.     target = -target
  20.     if target < 0 then
  21.         target = math.pi*2 +target
  22.     end
  23.     if target <= 0 then target = 0 end --Negative 0 is *still* a problem, what the heck
  24.    
  25.     if angle then
  26.         if trackangle then
  27.             a = 0
  28.             if target > angle then
  29.                 if target-angle <= math.pi then
  30.                     angle = angle + round(target-angle)*dt*speed
  31.                 else
  32.                     angle = angle - round(math.pi*2-(target-angle))*dt*speed
  33.                 end
  34.             else
  35.                 if angle-target <= math.pi then
  36.                     angle = angle - round(angle-target)*dt*speed
  37.                 else
  38.                     angle = angle + round(math.pi*2-(angle-target))*dt*speed
  39.                 end
  40.             end
  41.            
  42.             if angle < 0 then angle = angle + math.pi*2 end
  43.             if angle >= math.pi*2 then angle = angle - math.pi*2 end
  44.         end
  45.     else
  46.         angle = target
  47.     end
  48. end
  49.  
  50. function love.draw()
  51.     local x, y = love.mouse.getPosition()
  52.     love.graphics.setColor(0, 0, 255, 255)
  53.     love.graphics.line(px, py, x, y)
  54.     love.graphics.setColor(0, 255, 0, 255)
  55.     love.graphics.points(px, py, x, y)
  56.    
  57.     love.graphics.setColor(255, 0, 0, 255)
  58.     love.graphics.line(px, py, px+math.cos(angle)*20, py-math.sin(angle)*20)
  59.    
  60.     love.graphics.setColor(255, 255, 255, 255)
  61.     love.graphics.print("Target = " .. round(math.deg(target)), 5, 5)
  62.     love.graphics.print("Angle = " .. round(math.deg(angle)), 5, 25)
  63.     love.graphics.print("Speed = " .. speed, 5, 45)
  64. end
  65.  
  66. function love.wheelmoved(x, y)
  67.     if y > 0 then
  68.         if speed < 1 then
  69.             speed = speed+.25
  70.         else
  71.             speed = math.min(10, speed+1)
  72.         end
  73.     else
  74.         if speed > 1 then
  75.             speed = speed-1
  76.         else
  77.             speed = math.max(.25, speed-.25)
  78.         end
  79.     end
  80. end
  81.  
  82. function distance(x1, y1, x2, y2)
  83.     return math.sqrt((x1-x2)^2 + (y1-y2)^2)
  84. end
  85.  
  86. function round(n, d)
  87.     local d = d or 2
  88.     return math.floor(n*10^d)/10^d
  89. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement