因此,我在 Java 中使用了一组特殊的海龟图形类(但它们具有所有常规命令:移动、绘制、转动等)。我正在尝试绘制一个六点星(实际上是两个三角形)。
谁能给出一些关于我如何绘制星星的伪代码?我了解图形的工作原理,并且可以计算点的角度(它们是 30 度),但我真的不明白如何将它们放在一起...?
因此,我在 Java 中使用了一组特殊的海龟图形类(但它们具有所有常规命令:移动、绘制、转动等)。我正在尝试绘制一个六点星(实际上是两个三角形)。
谁能给出一些关于我如何绘制星星的伪代码?我了解图形的工作原理,并且可以计算点的角度(它们是 30 度),但我真的不明白如何将它们放在一起...?
首先,我不确定你说的角度是 30 度是什么意思。等边三角形的内角都是60度。(他们必须加起来 180,记得吗?)。但是乌龟必须转过外角(这些的补充),即 120 度。
您需要弄清楚的另一件事是在绘制三角形之间将海龟移动多远。这是外接恒星的六边形边的长度。通过一点几何,您可以计算出这个长度是三角形的一条边的长度除以 3 的平方根。
这是给你的一些 Logo 代码(那肯定比伪代码更好,对吧?)
TO Star6 :size
; Draw First Triangle
REPEAT 3 [FD :size RT 120]
; Reposition for Second Triangle
PU
RT 90
FD :size / SQRT 3
LT 90
PD
; Draw Second Triangle
REPEAT 3 [FD :size LT 120]
; Return to starting position
PU
LT 90
FD :size / SQRT 3
RT 90
PD
END
; Draw some stars of various sizes and colors
CS
SETCOLOR "Red
Star6 50
SETCOLOR "Green
Star6 100
SETCOLOR "Blue
Star6 200
您可以在此在线徽标解释器上使用它:http: //www.calormen.com/logo/
从星星的顶部开始,朝北(向上)。
向南转(顺时针 180),然后逆时针转角(30)。走(距离)。
向北转(逆时针 150),然后顺时针转(60)。走(距离)。
向南转(顺时针 120),然后逆时针转(90)。走(距离)。
等等。这应该让您对如何为每个步骤编写算法有一个相对简单的想法。
既然人们声称 Python 是可执行的伪代码,那么:
SIDE_LENGTH = 2 * HEIGHT / sqrt(3)
CIRCUMSCRIBED_RADIUS = 2 * HEIGHT / 3
for triangle in (1, 2):
turtle.penup()
turtle.right(150)
turtle.forward(CIRCUMSCRIBED_RADIUS * triangle)
turtle.right(30)
turtle.pendown()
for side in (1, 2, 3):
turtle.right(120)
turtle.forward(SIDE_LENGTH)
您需要提供HEIGHT
构成星形的三角形之一的高度。您可能还需要根据您希望星星指向的方式设置起始方向: