伸び縮みしているのがわかるような太い線を描く

fillLine = (function()
               local POW  = math.pow
               local ATAN = math.atan2
               local MIN  = math.min
               local SQRT = math.sqrt
               local SIN  = math.sin
               local COS  = math.cos
               return function(gc, x1, y1, x2, y2, area) -- (gc, 始点, 終点, 面積)
                         local angle = ATAN(y2 - y1, x2 - x1)
                         local r     = MIN(30000, area/(2 * SQRT(POW((x2 - x1), 2) + POW((y2 - y1), 2))))
                         local rSin = r * SIN(angle)
                         local rCos = r * COS(angle)
                         local p1x, p1y = x1 - rSin, y1 + rCos
                         local p2x, p2y = x2 - rSin, y2 + rCos
                         local p3x, p3y = x2 + rSin, y2 - rCos
                         local p4x, p4y = x1 + rSin, y1 - rCos
                         gc:fillPolygon({p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y})
                      end
            end)()

-- 確かめる。
function on.paint(gc)
   fillLine(gc, 50, 20 , 100, 20 , 1000)
   fillLine(gc, 50, 70 , 150, 70 , 1000)
   fillLine(gc, 50, 120, 200, 120, 1000)
   fillLine(gc, 50, 170, 300, 170, 1000)
end

f:id:ti-nspire:20170824081534p:plain:w300