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.