Госпер кривой , также известный как Пеано-Госпером кривой , [1] назван в честь Билла Госпер , также известный как flowsnake (в непроизвольная перестановка звуков из снежинки ), является пространство заполнения кривой , предел которой множество Rep -7. Это фрактальная кривая аналогична по своей конструкции к кривой дракона и кривой Гильберта .
Кривая Госпера также может использоваться для эффективной иерархической гексагональной кластеризации и индексации. [2]
Кривая Госпера может быть представлена с помощью L-системы со следующими правилами:
В этом случае и A, и B означают движение вперед, + означает поворот влево на 60 градусов, а - означает поворот вправо на 60 градусов - с использованием программы в стиле «черепахи», такой как Logo .
Программа Logo для рисования кривой Госпера с использованием черепаховой графики ( онлайн-версия ):
to rg : st : ln make "st: st - 1 make " ln: ln / sqrt 7 if : st > 0 [ rg : st : ln rt 60 gl : st : ln rt 120 gl : st : ln lt 60 rg : st : ln lt 120 rg : st : ln rg : st : ln lt 60 gl : st : ln rt 60 ] если : st = 0 [ fd : ln rt 60 fd : ln rt 120 fd : ln lt 60 fd : ln lt 120 fd : ln fd : ln lt 60 fd : ln rt 60 ] конец to gl : st : ln make "st: st - 1 make " ln: ln / sqrt 7 if : st > 0 [ lt 60 rg : st : ln rt 60 gl : st : ln gl : st : ln rt 120 gl : st : ln rt 60 rg : st : ln lt 120 rg : st : ln lt 60 gl : st : ln ] если : st = 0 [ lt 60 fd : ln rt 60 fd : ln fd : ln rt 120 fd : ln rt 60 fd : ln lt 120 fd : ln lt 60 fd : ln ] конец
Программа может быть запущена, например, с помощью rg 4 300
или альтернативно gl 4 300
.
Программа Python , которая использует вышеупомянутые правила L-системы, чтобы нарисовать кривую Госпера с использованием графики черепахи ( онлайн-версия ):
импортная черепахаdef gosper_curve ( order : int , size : int , is_A : bool = True ) -> None : "" "Нарисуйте кривую Госпера." "" if order == 0 : turtle . вперед ( размер ) возврат для операции в "AB - B + A ++ AA + B-" if is_A else "+ A-BB - B-A ++ A + B" : gosper_op_map [ op ] ( order - 1 , размер )gosper_op_map = { «A» : лямбда o , размер : gosper_curve ( o , size , True ), «B» : лямбда o , размер : gosper_curve ( o , size , False ), «-» : лямбда o , размер : черепаха . right ( 60 ), "+" : лямбда o , размер : черепаха . left ( 60 ), } size = 10 order = 3 gosper_curve ( порядок , размер )
Пространство, заполненное кривой, называется островом Госпера . Первые несколько его итераций показаны ниже:
Госпер остров может плитка самолет . На самом деле, семь копий острова Госпером могут быть соединены вместе , чтобы сформировать форму, которая аналогична , но расширены с коэффициентом √ 7 во всех измерениях. Как видно из диаграммы ниже, выполнение этой операции с промежуточной итерацией острова приводит к увеличенной версии следующей итерации. Повторение этого процесса до бесконечности создает мозаику плоскости. Сама кривая аналогичным образом может быть продолжена до бесконечной кривой, заполняющей всю плоскость.