Whiteboard robot number crunching
I'm thinking of building a robot that suspends a whiteboard marker from two strings, and draws on a whiteboard. There would be two motors that can change the length of the strings.
I was playing with some calculations for this robot, literally on the back of an envelope. I need to calculate how long each string will be for a particular coordinate.
Pythagoras' theorem gives:
$latex l_1^2=x^2+y^2 &s=1$
and
$latex l_1^2=r^2+s^2 &s=1$
If we smash them together, we get:
$latex r^2 + s_1^2 = x^2 + y^2 &s=1$
$latex s_1 = \sqrt{x^2+y^2-r^2} &s=1$
and of course
$latex s_2 = \sqrt{(w-x)^2+y^2-r^2} &s=1$
That was easier than I expected - the maths wasn't too hard! This should be enough to draw short segments with linear interpolation.
But, I'd like to know how the string length changes as I draw a straight line. Imagine a line being drawn perpendicular to the string; when the length of the string gets very long, it should lengthen at the same rate as the line. This suggests that the string length and the line length forms a hyperbola.
Consider a horizontal line beneath one of the wheels. Let x be the distance from the closest point on the line to the wheel. s is the string length. If the line went through the wheel, the graph
$latex \frac{x}{s}=1 &s=1$
would give the line where the x position is the same as the string length.
If the line does not pass through the wheel, this equation from earlier where r is the wheel radius and y is the shortest distance from the wheel to the line:
$latex s^2 = x^2 + y^2 - r^2 &s=1$
can become
$latex 1 = \frac{x^2 + y^2 - r^2}{s^2} &s=1$
which should produce a hyperbola. When the string is long enough, y²-r² becomes negligible.
Previously I've implemented Bresenham's algorithm to interpolate values on an AVR; it would be nice to do the same thing to calculate this parabola while drawing a straight line segment. It turns out someone has worked out how to use calculations like this for hyperbolae.