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