Skip to content

Smocza Krzywa

Smocza Krzywa, znana również jako krzywa Heighwaya, jest fraktalem, który powstaje poprzez wielokrotne składanie linii pod kątem prostym. Każde zgięcie tworzy nowy segment, który jest obrócony o 90 stopni w lewo lub w prawo, w zależności od iteracji. W rezultacie powstaje złożony wzór, który przypomina smoka, stąd nazwa. Fraktal ten jest interesujący ze względu na swoją samopodobność i złożoność, mimo że jest generowany przez prosty algorytm.

Specification

Input

  • stopień - stopień fraktala
  • długość - długość linii
  • znak - wartość \(1\) lub \(-1\) oznaczająca, w którą stronę należy skręcić

Solution

Pseudocode

procedura SmoczaKrzywa(stopień, długość, znak):
    1. Jeżeli stopień = 0, to:
        2. Przód(długość)
        3. Zakończ
    4. Lewo(45 * znak)
    5. SmoczaKrzywa(stopień - 1, długość, 1)
    6. Prawo(90 * znak * -1)
    7. SmoczaKrzywa(stopień - 1, długość, -1)
    8. Lewo(45 * znak)

Block diagram

%%{init: {"flowchart": {"curve": "linear"}, "theme": "neutral"} }%%
flowchart TD
    START(["SmoczaKrzywa(stopień, długość, znak)"]) --> K1{stopień = 0}
    K1 -- TRUE --> K2["Przód(długość)"]
    K2 --> STOP([STOP])
    K1 -- FALSE --> K4["Lewo(45 * znak)
    SmoczaKrzywa(stopień - 1, długość, 1)
    Prawo(90 * znak * -1)
    SmoczaKrzywa(stopień - 1, długość, -1)
    Lewo(45 * znak)"]
    K4 --> STOP

Implementation

C++

Python

Blockly