¿Cómo puedo hacer que Turtle reconozca un círculo?

Estoy tratando de hacer un progtwig Python con Turtle Graphics que dibuje dos círculos superpuestos (como un Diagtwig de Venn) dentro de un rectángulo, y dibuje puntos al azar en el Diagtwig de Venn.

He hecho esto con éxito, pero ahora quiero que el progtwig reconozca si un punto está en uno de los círculos o en la intersección del Diagtwig de Venn. Luego quiero cambiar el color de los puntos según la región en la que se encuentren.

Lo que he hecho hasta ahora para el progtwig es enumerar las variables, definir las formas y hacer un bucle for para generar puntos al azar.

turtle es solo una biblioteca de gráficos, no hace un seguimiento de los objetos que has dibujado en la pantalla. Entonces, para calcular si un punto dado está dentro de uno de los círculos de su diagtwig de Venn, deberá seguir los siguientes pasos:

  1. Almacene las coordenadas de cada círculo cuando llame a circle() (las clases serían útiles, pero es probable que aún no las haya aprendido)
  2. Llame a una función para probar si el punto está en el espacio de coordenadas del círculo almacenado. Esta será una operación puramente matemática sobre coordenadas cartesianas. El enlace que @Tim dio ( Ecuación para probar si un punto está dentro de un círculo ) lo ayudará a lograrlo.

Un poco de orientación en el paso 1:

Cuando dibuja un círculo, tiene su centro (posición actual de la tortuga) y un radio. A partir de ahí, obtener todos los puntos dentro de ese círculo es solo geometría (si no puede derivar la fórmula, una búsqueda rápida le ayudará). Te sugiero que hagas una función que dibuje un círculo del diagtwig de Venn y otra que devuelva los puntos dentro de un círculo. Algo como esto:

 def venn_circle(circle_color, circle_radius): """ Draws a colored circle, returns the points within. """ turtle.color(circle_color) #  center = turtle.position() #  return circle_coords(center, circle_radius) def circle_coords(center, radius): """ Return the set of pixels within the circle. """ raise NotImplementedError() 

Y una nota rápida que nunca debes hacer from package import * . Está bien en algunos casos, pero por lo general solo traerá problemas. En mi código de ejemplo, asumí que has sustituido este idioma por la import turtle .

Tuve una tarea bastante similar, traté de resolverlo de manera simple:

 import tkinter import random canvas = tkinter.Canvas(width = 300, height = 200, bg = "white") canvas.pack() n = 500 for i in range(n): x = random.randrange(0, 300) y = random.randrange(0, 200) bod = canvas.create_oval(x+3, y+3, x-3, y-3, fill = "black") if (x - 100)**2+(y - 100)**2 < 80**2: #for dot in circle1 fill red canvas.itemconfig(bod, fill = "red") if (x - 180)**2+(y - 100)**2 < 90**2: #for dot in circle2 fill blue canvas.itemconfig(bod, fill = "blue") if (x - 100)**2+(y - 100)**2 < 80**2 and (x - 180)**2+(y - 100)**2 < 90**2: canvas.itemconfig(bod, fill = "green") #overlapping of circle1 and 2