Черепашья графика

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Черепашья графика в системе ACSLogo: рисование 11-угольника
Черепашка

Черепа́шья гра́фика — принцип организации библиотеки графического вывода, построенный на метафоре Черепахи[1], воображаемого (а в некоторых экспериментах и реального) роботоподобного устройства, которое перемещается по экрану или бумаге и поворачивается в заданных направлениях, при этом оставляя (или, по выбору, не оставляя) за собой нарисованный след заданного цвета и ширины.

Базовые принципы[править | править код]

Впервые, по-видимому, черепашья графика была применена при реализации языка программирования Лого, в дальнейшем использовалась в ряде графических библиотек и систем программирования.

Фактически используется управление рисованием в полярной системе координат, связанной с текущим положением черепахи.

Базовые команды:

  • повернуть направо / повернуть налево (на указанный угол)
  • переместиться вперёд / переместиться назад (на указанное расстояние, обычно в условных «шагах», часто равных по длине размеру пикселя экрана)
  • поднять перо / опустить перо
  • установить новый цвет пера / установить новую толщину пера
  • установить новый курс / установить новое место (поворот и перемещение относительно базовой Декартовой системы координат листа)
  • стереть всё
  • показать черепаху / спрятать черепаху
  • получить значения текущих координат, угла поворота черепахи, цвета и толщины пера

В системах, поддерживающих работу с несколькими черепахами, обычно есть команды

  • добавления и удаления черепахи
  • задания черепахе имени и обращения к ней по имени
  • назначения черепахе команд, выполняемых черепахой асинхронно, в автономном режиме
  • перемещения черепахи на задний/на передний план

В системах, нацеленных на детей, например, в системе ЛогоМиры, есть возможность менять внешний вид черепахи, заменяя её стандартный вид на картинку из комплекта поставки или на нарисованную вручную. Кроме того, изображение черепахи можно делать крупнее или мельче, а также отпечатывать на листе или наоборот, копировать с листа.

Одним из применений черепашьей графики являются L-системы[2], предоставляющие механизм для визуализации фрактальных кривых.

Примеры[править | править код]

В качестве примера рассмотрим рисование в начале координат квадрата со стороной в 100 точек в «обычной» графике:

line (0,   0,   0,   100);
line (0,   100, 100, 100);
line (100, 100, 100, 0);
line (100, 0,   0,   0);

то же самое в черепашьей графике, на языке Лого:

repeat 4 [forward 100 right 90]

Обобщить данный пример для случая N-угольника в «обычной» графике уже довольно затруднительно, в то время как в черепашьей графике это так же просто:

repeat :N [forward 100 right 360/:N]

Пример рисования квадрата на языке Python

import turtle
for i in range(4):
    turtle.forward(50)
    turtle.left(90)

Примечания[править | править код]

  1. Николов Р., Сендова Е. Начала информатики. Язык Лого / Под ред. Б. Сендова, Пер. с болг. Под ред. А. В. Гиглавого. М.: Гл. ред. физ.-мат. лит., 1989. ISBN 5-02-013998-X
  2. Моделирование растений при помощи L-систем. Дата обращения: 20 июля 2009. Архивировано 30 января 2009 года.