import math
import random
import os
from drawMethods import fillCircle
from palettes import randomPalette
from util import getTurtleAndScreen
# Circles
# CAC, 3/27/2023

def dist(x, y, x2, y2):
    return math.sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2))

def Draw():
    numCircles = random.randint(50,200)

    large = random.randint(0, 1)==0

    if large:
        title = "Nonoverlapping Circles (Large) "+str(numCircles)
    else:
        title = "Nonoverlapping Circles (small) " + str(numCircles)
    width = 800
    height = 600
    filename = os.path.basename(__file__)[0:-3]
    turtle, screen = getTurtleAndScreen(title,width,height,filename,moveWorld=True)

    colors = randomPalette()
    bg = random.choice(colors)
    screen.bgcolor(bg)
    colors.remove(bg)

    circles=[]

    for i in range(0,numCircles):
        intersect=True
        failures = 0
        while intersect is True and failures<100:
            intersect=False
            if large:
                radius = random.randint(50,100)
            else:
                radius = random.randint(10,40)
            x=random.randint(radius,width-radius)
            y=random.randint(radius,height-radius)
            for circle in circles:
                x2,y2,r2=circle
                if dist(x,y,x2,y2) < radius + r2:
                    intersect = True
                    failures = failures + 1
            if not intersect:
                turtle.color(random.choice(colors))
                fillCircle(turtle,x,y,radius)
                circles.append((x,y,radius))

    screen.mainloop()
# ----------------------------------------------------------------
if __name__ == '__main__':
   Draw()
