def drawArc_Basic(grid, R): x, y = 0, R while x < y: drawPixel_symmetry8(x, int(y + 0.5), 1, grid) x += 1 y = sqrt(R**2 - x**2)
def drawArc_InscribedRegularPolygonApproximate(grid, R): Alpha = 1 / R cosAlpha, sinAlpha = cos(Alpha), sin(Alpha) x, y = R, 0 while x >= y: drawPixel_symmetry8(int(x + 0.5), int(y + 0.5), 1, grid) x = cosAlpha * x - sinAlpha * y y = sinAlpha * x + cosAlpha * y
def drawArc_PositiveNegative(grid, R): F = 0 x, y = 0, R while x <= y: drawPixel_symmetry8(x, y, 1, grid) print(F) if F <= 0: F += (x << 1) + 1 x += 1 else: F += 1 - (y << 1) y -= 1
def drawArc_MidPoint_with_DDA(grid, R): d = 1 - R x, y = 0, R while x <= y: drawPixel_symmetry8(x, y, 1, grid) if d < 0: x += 1 d += 2 * x + 3 else: x += 1 y -= 1 d += ((x - y) << 1) + 5
def drawArc_MidPoint_with_DDA_nonreal(grid, R): d = 1 - R deltax, deltay = 3, 2 - (R << 1) x, y = 0, R while x <= y: drawPixel_symmetry8(x, y, 1, grid) if d < 0: x += 1 d += deltax deltax += 2 else: x += 1 y -= 1 d += (deltax + deltay) deltax += 2 deltay += 2
def drawArc_MidPoint_with_DDA_nonreal(grid, R, linetype): d = 1 - R deltax, deltay = 3, 2 - (R << 1) counter = 0 x, y = 0, R while x <= y: if linetype[counter % len(linetype)]: drawPixel_symmetry8(x, y, 1, grid) if d < 0: x += 1 d += deltax deltax += 2 else: x += 1 y -= 1 d += (deltax + deltay) deltax += 2 deltay += 2 counter += 1