使用乌龟筑巢三角形

时间:2019-04-14 15:29:48

标签: python turtle-graphics

我正试图在乌龟中嵌套4个大小分别为20、40、60和8的等边三角形,其等距间隔为7。

代码

from turtle import *

number_of_shapes = 4

side = 3

for spacing in range(1, number_of_shapes+1):

    for sides in range(1, side+1):
       forward(20*spacing)
       left(360/side)

    penup()
    goto(-10*spacing, -7*spacing)
    pendown()

我必须在goto中使用-10 *间距(-10 *间距,-7 *间距),以使嵌套的等边三角形之间的间距几乎相等。我想知道是否有一种方法可以仅使用数字7来实现相等的间距。

3 个答案:

答案 0 :(得分:0)

连接角落,您将看到天使30deg。它创建带有边107的矩形三角形。仅45deg创建边为1010的矩形三角形。

但是值(10, 7)不正确。正确的值是(10, 5.8)-但是它们可能会在仅使用整数值显示元素的监视器上创建看起来不像(10, 7)的空格。

a = 10
b = 10 * tangens(30deg) = 5.8

我使用这些值在三角形之间创建空间,然后我以30度角绘制直线-理想地连接角。如果您使用b = 7,则会得到三角形,而这条线将不会连接角线

from turtle import *
import math

number_of_shapes = 4

side = 3

a = 10
b = math.tan(math.radians(30)) * a
# b = 7

for spacing in range(1,number_of_shapes +1):

    for sides in range(1,side+1):

       forward(20*spacing)

       left(360/side)

    penup()

    goto(-a * spacing, -b * spacing)

    pendown()


left(30)
forward(100)

(10, 7)给出:

enter image description here

(10, 5.8)给出:

enter image description here

(10, 5.8)将三角形放置在正确的位置,但监视器并不理想(它们只能为x,y使用整数值),因此三角形之间的间隔看起来可能不如您的版本好。

答案 1 :(得分:0)

这似乎是一个经典的“更好地生活通过冲压”的问题。三角形从一个角绘制,但从中心冲压,从而解决了居中问题:

{{1}}

OP的绘制三角形在左侧,上述代码在右侧标记的三角形:

enter image description here

答案 2 :(得分:0)

如果OP正确阅读了他的作业问题,则仅三角形的底边需要有7的间距:)