Gosperova křivka - Gosper curve
The Gosperova křivka, také známý jako Peano-Gosperova křivka,[1] pojmenoval podle Bill Gosper, také známý jako flownake (A spoonerismus z sněhová vločka ), je křivka vyplňování prostoru jehož limit je nastaven rep -7. Je to fraktální křivka svou konstrukcí podobný konstrukci dračí křivka a Hilbertova křivka.
Gosperovu křivku lze také použít pro efektivní hierarchické šestihranné shlukování a indexování.[2]
Gosperova křivka čtvrtého stupně
Čára z červeného do zeleného bodu ukazuje jeden krok konstrukce Gosperovy křivky.
Algoritmus
Systém Lindenmayer
Gosperovu křivku lze reprezentovat pomocí L-systém s následujícími pravidly:
- Úhel: 60 °
- Axiom:
- Pravidla pro výměnu:
V tomto případě znamená A i B pohyb vpřed, + znamená otočení doleva o 60 stupňů a - znamená otočení doprava o 60 stupňů - pomocí programu ve stylu „želvy“, jako je Logo.
Logo
A Logo program pro kreslení Gosperovy křivky pomocí želví grafika (online verze ):
na rg :Svatý :ln udělat "st: st - 1 udělat „ln: ln / sqrt 7 -li :Svatý > 0 [rg :Svatý :ln rt 60 gl :Svatý :ln rt 120 gl :Svatý :ln lt 60 rg :Svatý :ln lt 120 rg :Svatý :ln rg :Svatý :ln lt 60 gl :Svatý :ln rt 60] -li :Svatý = 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]konec na gl :Svatý :ln udělat "st: st - 1 udělat „ln: ln / sqrt 7 -li :Svatý > 0 [lt 60 rg :Svatý :ln rt 60 gl :Svatý :ln gl :Svatý :ln rt 120 gl :Svatý :ln rt 60 rg :Svatý :ln lt 120 rg :Svatý :ln lt 60 gl :Svatý :ln] -li :Svatý = 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]konec
Program lze vyvolat například pomocí 4 300 rg
, nebo alternativně gl 4 300
.
Krajta
A Krajta program, který používá výše uvedená pravidla L-System, k vykreslení Gosperovy křivky pomocí grafiky želvy (online verze ):
import želvadef gosper_curve(objednat: int, velikost: int, je: bool = Skutečný) -> Žádný: "" "Nakreslete Gosperovu křivku." "" -li objednat == 0: želva.vpřed(velikost) vrátit se pro op v „A-B - B + A ++ AA + B-“ -li je jiný „+ A-BB - B-A ++ A + B“: gosper_op_map[op](objednat - 1, velikost)gosper_op_map = { "A": lambda Ó, velikost: gosper_curve(Ó, velikost, Skutečný), "B": lambda Ó, velikost: gosper_curve(Ó, velikost, Nepravdivé), "-": lambda Ó, velikost: želva.že jo(60), "+": lambda Ó, velikost: želva.vlevo, odjet(60),}velikost = 10objednat = 3gosper_curve(objednat, velikost)
Vlastnosti
Prostor vyplněný křivkou se nazývá Ostrov Gosper. Prvních několik iterací je uvedeno níže:
Ostrov Gosper může dlaždice the letadlo. Ve skutečnosti lze sedm kopií ostrova Gosper spojit dohromady a vytvořit tak tvar, který je podobný, ale zvětšen faktorem √7 ve všech rozměrech. Jak je patrné z níže uvedeného diagramu, provedení této operace s přechodnou iterací ostrova vede k zmenšené verzi další iterace. Opakováním tohoto procesu na neurčito vznikne a mozaikování letadla. Samotnou křivku lze také rozšířit na nekonečnou křivku vyplňující celou rovinu.
Viz také
Reference
- ^ Weisstein, Eric W. „Peano-Gosperova křivka“. MathWorld. Citováno 31. října 2013.
- ^ „Hierarchical Hexagonal Clustering and Indexing“, 2019, https://doi.org/10.3390/sym11060731
externí odkazy
- https://web.archive.org/web/20060112165112/http://kilin.u-shizuoka-ken.ac.jp/museum/gosperex/343-024.pdf
- http://kilin.clas.kitasato-u.ac.jp/museum/gosperex/343-024.pdf
- http://www.mathcurve.com/fractals/gosper/gosper.shtml (francouzsky)
- http://mathworld.wolfram.com/GosperIsland.html
- http://logo.twentygototen.org/mJjiNzK0
- https://larryriddle.agnesscott.org/ifs/ksnow/flowsnake.htm