在Python turtle圆内绘制随机圆
我试着用turtle在一个大圆圈内随机放置一些小圆圈 大圆的大小取决于是称为“小”、“中”还是“大”,我需要小圆保持在每个圆的半径范围内在Python turtle圆内绘制随机圆,python,random,turtle-graphics,Python,Random,Turtle Graphics,我试着用turtle在一个大圆圈内随机放置一些小圆圈 大圆的大小取决于是称为“小”、“中”还是“大”,我需要小圆保持在每个圆的半径范围内 def drawCircle(myTurtle, radius): circumference = 2 * 3.1415 * radius sideLength = circumference / 360 drawPolygon(myTurtle,sideLength,360) 如何使用“随机”将半径较
def drawCircle(myTurtle, radius):
circumference = 2 * 3.1415 * radius
sideLength = circumference / 360
drawPolygon(myTurtle,sideLength,360)
如何使用“随机”将半径较小的圆放置在初始圆内 你可以试试这样的东西
from turtle import *
def drawcircles(circum): #multiples of 10
while circum > 0:
circle(circum)
circum -= 10
penup()
left(90)
forward(10)
right(90)
pendown()
drawcircles(50)
exitonclick()
我画了一个圆,重新设置位置,然后再画一次,这个代码唯一的特点就是周长是10的倍数。现在我知道你们想要的是随机圈,所以你们可以修改它,使其按照你们想要的方式工作。不过,这是一个想法。为了确保嵌套圆保持在封闭圆内,最好的策略可能是始终返回到外圆的中心。您应该在
draw\u circle
函数中执行此操作。这样你就可以知道海龟在哪里,它可以移动多远而不离开包围圈
绘制外圆(并返回其中心)后,您可以旋转随机量,确定随机较小半径,将随机量从外圆中心向上移动到较大半径-较小半径,绘制较小圆,返回外圆中心,然后重新重复
下面是一些代码:
from turtle import *
import random
def draw_circle(radius, angle):
circumference = 2 * 3.1415 * radius
side_length = circumference / (360 / angle)
penup()
forward(radius)
right(90)
pendown()
for i in range(360 / angle):
forward(side_length)
right(angle)
penup()
left(90)
backward(radius)
def draw_random_circle(outer_radius, angle):
radius = random.randint(1, outer_radius/2)
distance = random.randint(0, outer_radius - radius)
segment = random.randint(0, 360)
right(segment)
forward(distance)
draw_circle(radius, angle)
backward(distance)
left(segment)
draw_circle(100, 6)
for i in range(10):
draw_random_circle(100, 6)
done()
例如:
假设较大的圆具有半径
R
,较小的圆具有半径R
。这意味着小圆的圆心必须在半径为R-R的圆内,这样小圆就不会超过大圆
假设较大的圆位于
圆x
,圆y
,半径R
。较小的圆将具有半径r
进口:
from math import sqrt
from random import uniform
所需变量:
center_x: Center x of large circle
center_y: Center y of large circle
R: radius of large circle
r: radius of small circle
代码:
我们在-radius\u-bound
和radius\u-bound
之间选择一个圆x
值,然后在圆内的限制范围内选择一个圆y
值
def draw_circle():
radius_bound = R - r
center_x = uniform(circle_x - radius_bound, circle_x + radius_bound)
x_offset = center_x - circle_x
y_limit = sqrt(radius_bound ** 2 - x_offset ** 2)
center_y = uniform(circle_y - y_limit, circle_y + y_limit)
my_turtle.penup()
my_turtle.goto(center_x, center_y - r)
my_turtle.seth(0)
my_turtle.pendown()
my_turtle.circle(r)