我试着在乌龟里嵌套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来实现相等的间距。
发布于 2019-04-15 00:17:31
连接角落,您将看到angel 30deg
。它创建边为10
和7
的矩形三角形。只有45deg
才能创建边为10
和10
的矩形三角形。
但是值(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
使用整数值),因此三角形之间的空格看起来可能不如您的版本中的效果好。
发布于 2019-04-16 03:55:21
这似乎是一个经典的“更好地生活在冲压”的问题。三角形从一个角绘制,但从中心冲压,这解决了居中问题:
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绘制的三角形,右边是上面代码标记的三角形:
发布于 2019-05-13 15:18:53
如果OP正确地阅读了他的分配问题,那么只有三角形的底部需要有7的间距:)
https://stackoverflow.com/questions/55676973
复制相似问题