В компьютерной графике графика черепахи — это векторная графика, использующая относительный курсор (« черепаха ») на декартовой плоскости (оси x и y) . Графика черепахи — ключевая особенность языка программирования Logo . [1]
У черепахи есть три атрибута: местоположение, ориентация (или направление) и ручка. Ручка тоже имеет атрибуты: цвет, ширина и состояние вкл/выкл (также называемое вниз и вверх ).
Черепаха движется с помощью команд, которые относятся к ее собственному положению, например, «перейти вперед на 10 клеток» и «повернуть налево на 90 градусов». Ручкой, которую несет черепаха, также можно управлять, включив ее, установив ее цвет или ширину. Студент может понять (и предсказать и рассуждать) о движении черепахи, представив, что бы он сделал, если бы он был черепахой. Сеймур Паперт назвал это «телесно-синтонным» рассуждением.
Полная система графики черепахи требует потока управления, процедур и рекурсии: многие программы рисования черепах не справляются. Из этих строительных блоков можно построить более сложные формы, такие как квадраты, треугольники, круги и другие составные фигуры. Идея графики черепахи, например, полезна в системе Линденмайера для генерации фракталов .
Геометрия Черепахи также иногда используется в графических средах как альтернатива строго координатно-адресованной графической системе.
Графика черепахи часто ассоциируется с языком программирования Logo . [2] Сеймур Паперт добавил поддержку графики черепахи в Logo в конце 1960-х годов для поддержки своей версии робота-черепахи , простого робота, управляемого с рабочей станции пользователя, который предназначен для выполнения назначенных ему функций рисования с помощью небольшой выдвижной ручки, установленной в корпусе робота или прикрепленной к нему. Геометрия черепахи работает несколько иначе, чем ( x , y ) адресованная декартовой геометрии , будучи в основном векторной (т. е. относительное направление и расстояние от начальной точки) по сравнению с системами с координатной адресацией, такими как растровые изображения или растровая графика. С практической точки зрения использование геометрии черепахи вместо более традиционной модели имитирует фактическую логику движения робота-черепахи. Черепаха традиционно и чаще всего представляется графически либо в виде треугольника, либо в виде значка черепахи (хотя она может быть представлена любым значком).
Сегодня стандартная библиотека языка программирования Python включает графический модуль Turtle. [3] Как и его предшественник Logo, реализация Turtle в Python позволяет программистам управлять одной или несколькими черепашками в двумерном пространстве. Поскольку стандартный синтаксис Python, поток управления и структуры данных могут использоваться вместе с модулем turtle, turtle стал популярным способом для программистов, изучающих Python, ознакомиться с основами языка. [4]
Идеи, лежащие в основе графики черепахи, можно расширить, включив в нее трехмерное пространство. Это достигается с помощью одной из нескольких различных моделей координат. Распространенная настройка — декартово-вращательная, как и в случае с оригинальной 2D-черепашкой: дополнительный вектор «вверх» ( нормальный вектор ) определяется для выбора плоскости, в которой вращается 2D-вектор «вперед» черепахи; сам вектор «вверх» также вращается вокруг вектора «вперед». По сути, черепаха имеет два разных угла направления, один внутри плоскости, а другой определяет угол плоскости. Обычно изменение угла плоскости не перемещает черепаху, в соответствии с традиционной настройкой.
Verhoeff 2010 [5] реализует подход с двумя векторами; команда roll используется для вращения вектора «вверх» вокруг вектора «вперед». Статья переходит к разработке алгебраической теории для доказательства геометрических свойств из синтаксических свойств базовых программ черепахи. Одно из открытий заключается в том, что команда dive на самом деле является сокращением последовательности turn-roll-turn.
Cheloniidae Turtle Graphics — это библиотека 3D-черепах для Java . Она имеет команду крена (такую же, как roll ) и команду тангажа (такую же, как dive ) в "Rotational Cartesian Turtle". Другие координатные модели, включая неевклидову геометрию, разрешены, но не включены. [6]