3 czerwca 2021 (czwartek), 20:15:15

Krzywe Hilberta w Java Script

 

Zachciało mi się to co kiedyś napisałem w VBA przepisać  dziś na JS.

 

/* Rem
Rem Krzywe Hilberta wg. algorytmu Niklausa Wirth'a
Rem zawartego w książce "Algorytmy + struktury danych = programy"
Rem w chwili radości (21 grudnia 2002) z Pascala na VBA przetłumaczył Wojtek34

A dziś, czyli w boże ciało 3 czerwca 2021, ponieważ nie muszę chodzić na procesje przetłumaczylem sobie
na Java Scripy nie bardzo słabo znając ten język i środowisko przeglądarki.
*/

var XX; var YY;
var x; var y;
var h;

function Hilbert () {
N = 5; h0 = 700;

InicjujPisanie ();

h = h0; x0 = h / 2; y0 = x0;

for (i = 1; i < N; i++) {
h = h / 2;
x0 = x0 + h / 2; y0 = y0 + h / 2;
x = x0; y = y0; UstawPioro (8 / i);
A (i);
}
}

function InicjujPisanie() {
x = 0; y = 0;
}

function UstawPioro (grubosc) {
XX = x; YY = y;
ctx.lineWidth = grubosc;
}

function Kresl () {
ctx.moveTo (XX, YY);
ctx.lineTo (x, y);
XX = x; YY = y;

ctx.stroke(); //po zakończeniu rysowania obrysowujemy linię
}

function A(i) {
if (i > 0) {
D (i - 1); x = x - h; Kresl();
A (i - 1); y = y - h; Kresl();
A (i - 1); x = x + h; Kresl();
B (i - 1);
}
}

function B(i) {
if (i > 0) {
C (i-1); y = y + h; Kresl();
B (i-1); x = x + h; Kresl();
B (i-1); y = y - h; Kresl();
A (i-1);
}
}

function C(i) {
if ( i > 0 ) {
B (i-1); x = x + h; Kresl();
C (i-1); y = y + h; Kresl();
C (i-1); x = x - h; Kresl();
D (i-1);
}
}

function D(i) {
if ( i > 0 ) {
A (i-1); y = y - h; Kresl();
D (i-1); x = x - h; Kresl();
D (i-1); y = y + h; Kresl();
C (i-1);
}
}

 

A oto efekt działania tego kodu na ekranie.

 

 

Jak przeglądarka nie rozumie co to Canvas!


Kategorie: programowanie, _blog, programowanie / html, programowanie / js


Słowa kluczowe: krzywe hilberta, rekurencja


Pliki


Komentarze: (0)

Skomentuj notkę

Disclaimers :-) bo w stopce coś wyglądającego mądrze można napisać. Wszystkie powyższe notatki są moim © wymysłem i jako takie związane są ze mną. Ale są też materiały obce, które tu przechowuję lub cytuje ze względu na ich dobrą jakość, na inspiracje, bądź ilustracje prezentowanego lub omawianego tematu. Jeżeli coś narusza czyjeś prawa - proszę o sygnał abym mógł czym prędzej naprawić błąd i naruszeń zaniechać.