1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
return progress
end
return progress ^ power
end
return 1 - ( ( 1 - progress ) ^ power )
end
if progress < . 5 then
return ( ( progress * 2 ) ^ power ) / 2
end
return 1 - ( ( ( 1 - progress ) * 2 ) ^ power ) / 2
end
end
end
end
end
end
end
end
end
end
end
end
end
end
if x1 == y1 and x2 == y2 then
end
return function ( progress )
end
end
do
local P = 1.57
--The actual zoom level we use to size things does not go linearly from min to max. Going linearly causes the zoom to feel like it is moving very fast to start
--and then moving more and more slowly as we reach max zoom. To counteract this we treat the progression from min to max as a curve that increases more slowly to
--start and then faster later. Research has shown that the curve y=e^px best matches human expectations of an even zoom speed with a p value of 6^0.25 ~= 1.57. We
--normalized this curve so that y goes from 0 to 1 as x goes from 0 to 1 since we operate on a normalized value between min and max zoom.
end
end |