diff options
Diffstat (limited to 'main.lua')
-rw-r--r-- | main.lua | 26 |
1 files changed, 20 insertions, 6 deletions
@@ -5,6 +5,10 @@ local function plot(f,x0,xn) x0 = x0 or G.inverseTransformPoint(0,0) xn = xn or G.inverseTransformPoint(G.getDimensions(),0) + if xn < x0 then + xn,x0 = x0,xn + end + local h = (xn-x0)/n local ps = {} for i=0,n do @@ -39,7 +43,7 @@ function love.wheelmoved(x,y) L = L + (y/5) end -local function catenary(x1,y1,x2,y2) +local function catenary0(x1,y1,x2,y2) y1 = -y1 y2 = -y2 local dx = x2-x1 @@ -48,7 +52,7 @@ local function catenary(x1,y1,x2,y2) local my = (y1+y2)/2 local D = math.sqrt(dx^2+dy^2) - -- local L = D*1.2 + -- local L = D+(1/D) local r = math.sqrt(L^2 - dy^2)/dx local A = solve_for_A(r) @@ -59,6 +63,13 @@ local function catenary(x1,y1,x2,y2) return function(x) return -(a * math.cosh((x-b)/a) + c) end end +local function catenary(x1,y1,x2,y2) + if x2 < x1 then + x1,x2 = x2,x1 + y1,y2 = y2,y1 + end + return catenary0(x1,y1,x2,y2) +end local Ps = {{-1,1}, {1,1}} @@ -81,11 +92,13 @@ function love.draw() G.translate(W/2,H/2) G.scale(150) - -- G.setColor(0.8,0.8,0.8) - -- G.line(-10,0,10,0) - -- G.line(0,-10,0,10) + G.setColor(0.8,0.8,0.8) + for i=-10,10 do + G.line(-10,i,10,i) + G.line(i,-10,i,10) + end - -- G.circle('line',0,0,1) + G.circle('line',0,0,1) -- G.setColor(0,0,0) -- -- plot(function(x) return x^2 end) @@ -93,6 +106,7 @@ function love.draw() -- G.setColor(0,1,0) -- plot(atanh) + G.setColor(0,0,0) plot(catenary(Ps[1][1],Ps[1][2], Ps[2][1], Ps[2][2]), Ps[1][1], Ps[2][1]) |