I've been working on this for a while now, using 2 HiTech HS-422 servos, with an Arduino Uno.
I have the basic math correct, and am able to generate proper paired coordiates with the following:
while(i < 360)
pos_x=((R-r)*cos(z)+d*cos(((R-r)/r)*z)); // Calculate the x-position with angle z
pos_y=((R-r)*sin(z)-d*sin(((R-r)/r)*z)); // Calculate the y-position with angle z
x_coord = (pos_x * 3); // Allows for greater overall image size control
y_coord = (pos_y * 3); // Allows for greater overall image size control
servo_x.write(x_coord); // Write to servo X
servo_y.write(y_coord); // Write to servo y
Serial.print("("); Serial.print(x_coord); Serial.print("),("); Serial.print(y_coord);Serial.println(")"); // Print paired coordinates for testing on http://www.shodor.org/interactivate/activities/SimplePlot/
I've attached a file with the first 1000 pairs. Using the site above, you can see the difference when you're connecting the points, or just using them as a scatter plot.
My problem is this:
How do I get only the outline/perimeter of the equation?
Instead of the outline of a triangle/square/whatever the equation creates, it's basically colouring the whole object in.
I have one possible solution where I hook up the laser diode, and pulse it when at the coordinate in question, and eventually, all the dots will overlap and you'll get the image, but I'm hoping for a far more elegant solution.
One way would be :
1 get the datas as you have done
2 sort all the datas you have from (x mini, y mini) to (x maxi y maxi)
3 use this new array to light the