labelOffset = -0.6 (slider from -0.6 to 0.6, step 0.01)
axisLength = 9.2 (slider from 0 to 20, step 0.1)
minValue = -5 (slider from -5 to 5, step 1)
interval = 20 (slider from 0 to 20, step 0.1)
maxValue = 100 (slider from 10 to 100, step 1)
dx: axisLength * interval / (maxValue - minValue)
n: floor((maxValue - minValue) / interval)
A = (0.98, -4.6000000000000005)
tickSize = 0.11 (slider from 0 to 0.3, step 0.01)
tickLabels = Sequence(Text[minValue + k * interval, A + (labelOffset, k * dx)], k, 0.0, n)
ticks = Sequence(Segment[A + (tickSize, k * dx), A + (-1.0 * tickSize, k * dx)], k, 0.0, n)
myAxis = Vector(A, A + (0.0, axisLength))

Tool: myAxis
min, max,interval,point, length,ticksisze, labeloffset
Input: minValue, maxValue, interval, A, axisLength, tickSize, labelOffset
Output: myAxis, ticks, tickLabels

dx: axisLength * interval / (maxValue - minValue)
n: floor((maxValue - minValue) / interval)
myAxis = Segment(A, A + (axisLength, 0.0))
ticks = Sequence(Segment[A + (k * dx, tickSize), A + (k * dx, -1.0 * tickSize)], k, 0.0, n)
tickLabels = Sequence(Text[minValue + k * interval, A + (k * dx, labelOffset)], k, 0.0, n)