1 <?xml version="1.0" encoding="ISO-8859-1"?>
3 <screensaver name="hilbert" _label="Hilbert" gl="yes">
7 <video href="https://www.youtube.com/watch?v=NhKmipo_Ek4"/>
14 <option id="random" _label="2D or 3D"/>
15 <option id="2D" _label="2D" arg-set="-mode 2d"/>
16 <option id="3D" _label="3D" arg-set="-mode 3d"/>
20 <option id="random" _label="Open or closed paths"/>
21 <option id="closed" _label="Closed" arg-set="-ends closed"/>
22 <option id="open" _label="Open" arg-set="-ends open"/>
28 <number id="delay" type="slider" arg="-delay %"
29 _label="Frame rate" _low-label="Slow" _high-label="Fast"
30 low="0" high="100000" default="30000"
33 <number id="speed" type="slider" arg="-speed %"
34 _label="Speed" _low-label="Slow" _high-label="Fast"
35 low="0.02" high="10.0" default="1.0"/>
39 <number id="depth" type="slider" arg="-max-depth %"
40 _label="Recursion levels" _low-label="2" _high-label="10"
41 low="2" high="10" default="5"/>
43 <number id="thickness" type="slider" arg="-thickness %"
44 _label="Line thickness" _low-label="Thin" _high-label="Thick"
45 low="0.01" high="1.0" default="0.25"/>
50 <boolean id="wander" _label="Wander" arg-set="-wander"/>
51 <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
52 <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
53 <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
59 <xscreensaver-updater />
62 The recursive Hilbert space-filling curve, both 2D and 3D variants.
63 It incrementally animates the growth and recursion to the maximum
64 depth, then unwinds it back.
66 The Hilbert path is a single contiguous line that can fill a volume
67 without crossing itself. As a data structure, Hilbert paths are
68 useful because ordering along the curve preserves locality: points
69 that are close together along the curve are also close together in space.
70 The converse is often, but not always, true. The coloration
73 https://en.wikipedia.org/wiki/Hilbert_curve
75 Written by Jamie Zawinski; 2011.