1 <?xml version="1.0" encoding="ISO-8859-1"?>
3 <screensaver name="hilbert" _label="Hilbert" gl="yes">
12 <option id="random" _label="2D or 3D"/>
13 <option id="2D" _label="2D" arg-set="-mode 2d"/>
14 <option id="3D" _label="3D" arg-set="-mode 3d"/>
18 <option id="random" _label="Open or closed paths"/>
19 <option id="closed" _label="Closed" arg-set="-ends closed"/>
20 <option id="open" _label="Open" arg-set="-ends open"/>
26 <number id="delay" type="slider" arg="-delay %"
27 _label="Frame rate" _low-label="Slow" _high-label="Fast"
28 low="0" high="100000" default="30000"
31 <number id="speed" type="slider" arg="-speed %"
32 _label="Speed" _low-label="Slow" _high-label="Fast"
33 low="0.02" high="10.0" default="1.0"/>
37 <number id="depth" type="slider" arg="-max-depth %"
38 _label="Recursion levels" _low-label="2" _high-label="10"
39 low="2" high="10" default="5"/>
41 <number id="thickness" type="slider" arg="-thickness %"
42 _label="Line thickness" _low-label="Thin" _high-label="Thick"
43 low="0.01" high="1.0" default="0.25"/>
48 <boolean id="wander" _label="Wander" arg-set="-wander"/>
49 <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
50 <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
51 <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
58 This draws the recursive Hilbert space-filling curve, in both 2D and
59 3D variants. It incrementally animates the growth and recursion to
60 the maximum depth, then unwinds it back.
62 The Hilbert path is a single contiguous line that can fill a volume
63 without crossing itself. As a data structure, Hilbert paths are
64 useful because ordering along the curve preserves locality: points
65 that are close together along the curve are also close together in space.
66 The converse is often, but not always, true. The coloration
69 http://en.wikipedia.org/wiki/Hilbert_curve
71 Written by Jamie Zawinski; 2011.