that is the fundamental flaw in your method
rather than stepping by degrees or radians....
step by pixels
for all the "orthogonals", it does not matter whether you step by X or by Y
the orthogonals are 0, 45, 90, 135, 180, 225, 270, 315, and 360
but - in between these angles, step by X if the slope of the tangent is between -1 and 1
otherwise, step by Y
you will be much happier with your circle :t