This is the method I have used to do circles
function makecircle(%radius, %center)
{
for(%a=%radius*-1; %a<=%radius; %a++)
{
%chord = mfloor(msqrt(mpow(%radius, 2) - mpow(%a, 2))); //yay geometry
for(%b=%chord*-1; %b<=%chord; %b++)
{
%xf = %a + getword(%center, 0);
%yf = %b + getword(%center, 1);
//do stuff i guess...
}
}
}
Note that this should also fill the circle in, not just outline it.
Looking at yours, I am not sure if I entirely understand it (never seen mFloatLength() before), but it looks like you are limiting yourself to 360 points per circle, and at times jamming in more points than needed in smaller circles. I think if you base the circles on triangles like in the method above instead of on the angles, you might get a bit cleaner of a circle.