1

因此,我在 Java 中使用了一组特殊的海龟图形类(但它们具有所有常规命令:移动、绘制、转动等)。我正在尝试绘制一个六点星(实际上是两个三角形)。

谁能给出一些关于我如何绘制星星的伪代码?我了解图形的工作原理,并且可以计算点的角度(它们是 30 度),但我真的不明白如何将它们放在一起...?

4

3 回答 3

0

首先,我不确定你说的角度是 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/

于 2013-08-09T17:30:17.410 回答
0

从星星的顶部开始,朝北(向上)。

向南转(顺时针 180),然后逆时针转角(30)。走(距离)。

向北转(逆时针 150),然后顺时针转(60)。走(距离)。

向南转(顺时针 120),然后逆时针转(90)。走(距离)。

等等。这应该让您对如何为每个步骤编写算法有一个相对简单的想法。

于 2011-10-21T22:01:57.413 回答
0

既然人们声称 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构成星形的三角形之一的高度。您可能还需要根据您希望星星指向的方式设置起始方向:

在此处输入图像描述

于 2017-04-10T22:02:57.210 回答