Используя графику черепахи в Java? - PullRequest
1 голос
/ 22 октября 2011

Итак, я использую специальный набор графических элементов в Java (но у них есть все обычные команды: перемещение, рисование, поворот и т. Д.). Я пытаюсь нарисовать звезду из шести точек (фактически это два треугольника).

Может ли кто-нибудь дать какой-нибудь псевдокод о том, как я могу нарисовать звезду? Я понимаю, как работает графика, и я могу рассчитать углы точек (они равны 30 градусам), но я не совсем понимаю, как все это сложить ...?

Ответы [ 3 ]

0 голосов
/ 09 августа 2013

Во-первых, я не уверен, что вы имеете в виду, говоря, что углы составляют 30 градусов. Внутренние углы равностороннего треугольника - все 60 градусов. (Они должны добавить до 180, помните?). Но черепаха должна поворачиваться через внешние углы (дополнения к ним), которые составляют 120 градусов.

Еще одна вещь, которую вам нужно выяснить, это как далеко перемещать черепаху между рисованием треугольников. Это длина стороны шестиугольника, который окружает вашу звезду. С некоторой геометрией вы можете понять, что эта длина равна длине стороны треугольника, деленной на квадратный корень из 3.

Вот вам какой-нибудь код логотипа (он должен быть лучше, чем псевдокод, верно?)

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/

0 голосов
/ 11 апреля 2017

Поскольку люди утверждают, что 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 в качестве высоты одного из треугольников, составляющих звезду. Вам также может понадобиться установить начальную ориентацию в зависимости от того, каким образом вы хотите, чтобы ваша звезда указывала:

enter image description here

0 голосов
/ 22 октября 2011

Начните с вершины звезды, лицом к северу (вверх).

Поверните на юг (180 по часовой стрелке), а затем против часовой стрелки на угол (30). Go (расстояние).

Поверните на север (150 против часовой стрелки), а затем по часовой стрелке (60). Перейти (расстояние).

Поверните на юг (120 по часовой стрелке), а затем против часовой стрелки (90). Перейти (расстояние).

и так далее. Это должно дать вам относительно простое представление о том, как написать алгоритм для каждого шага.

...