Кривая Госпера, известная также как кривая Пеано-Госпера[1], названная именем Била Госпера[en], — это заполняющая пространство кривая. Кривая является фрактальной кривой, подобной кривым дракона и Гильберта.
![]() |
![]() |
Четвёртая стадия кривой Госпера | Ломаная линия от красной точки до зелёной показывает один шаг построения кривой Госпера. |
Кривую Госпера можно можно представить с помощью системы Линденмайера[en] со следующими правилами:
В этом случае A и B означают движение вперёд, + означает поворот влево на 60º, а — означает поворот на 60º вправо с использованием «черепашьего» стиля программирования, как в Лого.
Программа на Лого для рисования кривой Госпера с использованием черепашьей графики (онлайн-версия):
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]
if :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]
end
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]
if :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]
end
Программу можно запустить, например, командой rg 4 300
или gl 4 300
.
Заполненные кривой фрагменты плоскости называются островами Госпера. Несколько первых итераций приведены ниже:
![]() |
![]() |
![]() |
![]() |
![]() |
Остров Госпера может замостить плоскость. Фактически, семь копий острова Госпера можно соединить вместе с образованием похожей фигуры, но увеличенной на множитель √7 во всех направлениях. Как видно из рисунка ниже, эта операция приводит к уменьшенной версии следующей итерации кривой. Продолжение процесса бесконечно даёт замощение плоскости. Сама кривая может быть равным образом расширена на бесконечность с заполнением всей плоскости.
![]() |
![]() |