【问题标题】:Nesting Triangles using turtle使用海龟嵌套三角形
【发布时间】:2019-09-04 17:09:30
【问题描述】:

我正在尝试在海龟内嵌套 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*spacing, -7*spacing) 中使用 -10*spacing 才能在嵌套的等边三角形之间获得几乎相等的间距。我想知道是否有办法只使用数字 7 来实现等间距。

【问题讨论】:

  • 请修正代码的缩进。
  • 连接角,您将看到 30 度角。它创建边为 10 和 7 的矩形三角形。只有 45 度创建边为 7 和 7 的矩形三角形。但可能使用 cos(30)sin(30)tan(30) 和 7 可以计算出 10。

标签: python turtle-graphics


【解决方案1】:

连接角落,你会看到天使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) 给出:

(10, 5.8) 给出:

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

【讨论】:

    【解决方案2】:

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

    from turtle import Screen, Turtle
    
    NUMBER_OF_SHAPES = 4
    CURSOR_SIZE = 20
    
    screen = Screen()
    
    turtle = Turtle('triangle', visible=False)
    turtle.fillcolor('white')
    turtle.right(30)  # lay bottom on horizontal
    
    for sizing in range(NUMBER_OF_SHAPES, 0, -1):
    
        turtle.shapesize(20 * sizing / CURSOR_SIZE)
    
        turtle.stamp()
    
    screen.exitonclick()
    

    左边是OP绘制的三角形,右边是上面代码标记的三角形:

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 嗨,欢迎来到 Stackoverflow!如果您在回答任何问题之前可以read these guidelines,那就太好了。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多