import java.awt.Color; public class Hilbert{ static int width = 600; static int height = 600; static int h; static int x; static int y; static DrawingTool dt; static void caraVlevo() { dt.line(x,y,x-h,y); x = x - h; } static void caraVpravo() { dt.line(x+h,y,x,y); x = x + h; } static void caraNahoru() { dt.line(x,y-h,x,y); y = y - h; } static void caraDolu() { dt.line(x,y,x,y+h); y = y + h; } static void A(int i) { if (i==0) return; if (i==1) dt.stopUpdate(); D(i-1); caraVlevo(); A(i-1); caraDolu(); A(i-1); caraVpravo(); B(i-1); if (i==1) dt.startUpdate(); } static void B(int i) { if (i==0) return; if (i==1) dt.stopUpdate(); C(i-1); caraNahoru(); B(i-1); caraVpravo(); B(i-1); caraDolu(); A(i-1); if (i==1) dt.startUpdate(); } static void C(int i) { if (i==0) return; if (i==1) dt.stopUpdate(); B(i-1); caraVpravo(); C(i-1); caraNahoru(); C(i-1); caraVlevo(); D(i-1); if (i==1) dt.startUpdate(); } static void D(int i) { if (i==0) return; if (i==1) dt.stopUpdate(); A(i-1); caraDolu(); D(i-1); caraVlevo(); D(i-1); caraNahoru(); C(i-1); if (i==1) dt.startUpdate(); } public static void main(String[] args) { dt = new DrawingTool(width, height); h = height; x = height; for(int i=1;i<=7;i++){ h=h/2; x = height-5; y = h; dt.clear(); A(i); } } }