summaryrefslogtreecommitdiffstats
path: root/hacks/config/etruscanvenus.xml
diff options
context:
space:
mode:
Diffstat (limited to 'hacks/config/etruscanvenus.xml')
-rw-r--r--hacks/config/etruscanvenus.xml143
1 files changed, 143 insertions, 0 deletions
diff --git a/hacks/config/etruscanvenus.xml b/hacks/config/etruscanvenus.xml
new file mode 100644
index 0000000..090b102
--- /dev/null
+++ b/hacks/config/etruscanvenus.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<screensaver name="etruscanvenus" _label="EtruscanVenus" gl="yes">
+
+ <video href="https://www.youtube.com/watch?v=p3MgGyie6-I"/>
+
+ <command arg="-root"/>
+
+ <hgroup>
+ <select id="view-mode">
+ <option id="walk" _label="Random motion"/>
+ <option id="walk" _label="Walk" arg-set="-view-mode walk"/>
+ <option id="turn" _label="Turn" arg-set="-view-mode turn"/>
+ </select>
+
+ <boolean id="orientation-marks" _label="Show orientation marks"
+ arg-set="-orientation-marks"/>
+ </hgroup>
+
+ <hgroup>
+ <boolean id="deform" _label="Deform the surface"
+ arg-unset="-no-deform"/>
+
+ <number id="deform-speed" type="slider" arg="-deformation-speed %"
+ _label="Deformation speed"
+ _low-label="1.0" _high-label="100.0"
+ low="1.0" high="100.0" default="10.0"/>
+
+ <number id="init-deform" type="slider" arg="-initial-deformation %"
+ _label="Initial deformation"
+ _low-label="0.0" _high-label="3999.0"
+ low="0.0" high="3999.0" default="0.0"/>
+ </hgroup>
+
+
+ <hgroup>
+
+ <vgroup>
+ <select id="display-mode">
+ <option id="random" _label="Random surface"/>
+ <option id="wire" _label="Wireframe mesh" arg-set="-mode wireframe"/>
+ <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ </select>
+
+ <select id="appearance">
+ <option id="random" _label="Random pattern"/>
+ <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
+ <option id="bands" _label="Distance bands" arg-set="-appearance distance-bands"/>
+ <option id="bands" _label="Direction bands" arg-set="-appearance direction-bands"/>
+ </select>
+
+ <select id="colors">
+ <option id="random" _label="Random coloration"/>
+ <option id="twosided" _label="One-sided" arg-set="-colors one-sided"/>
+ <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
+ <option id="rainbow" _label="Distance colors" arg-set="-colors distance"/>
+ <option id="rainbow" _label="Direction colors" arg-set="-colors direction"/>
+ </select>
+
+ <boolean id="change-colors" _label="Change colors"
+ arg-unset="-no-change-colors"/>
+
+ <select id="projection">
+ <option id="random" _label="Random Projection"/>
+ <option id="perspective" _label="Perspective" arg-set="-projection perspective"/>
+ <option id="orthographic" _label="Orthographic" arg-set="-projection orthographic"/>
+ </select>
+ </vgroup>
+
+ <vgroup>
+ <number id="speed-x" type="slider" arg="-speed-x %"
+ _label="X rotation speed"
+ _low-label="-4.0" _high-label="4.0"
+ low="-4.0" high="4.0" default="1.1"/>
+
+ <number id="speed-y" type="slider" arg="-speed-y %"
+ _label="Y rotation speed"
+ _low-label="-4.0" _high-label="4.0"
+ low="-4.0" high="4.0" default="1.3"/>
+
+ <number id="speed-z" type="slider" arg="-speed-z %"
+ _label="Z rotation speed"
+ _low-label="-4.0" _high-label="4.0"
+ low="-4.0" high="4.0" default="1.5"/>
+ </vgroup>
+
+ <vgroup>
+ <number id="walk-direction" type="slider" arg="-walk-direction %"
+ _label="Walking direction"
+ _low-label="-180.0" _high-label="180.0"
+ low="-180.0" high="180.0" default="83.0"/>
+
+ <number id="walk-speed" type="slider" arg="-walk-speed %"
+ _label="Walking speed"
+ _low-label="1.0" _high-label="100.0"
+ low="1.0" high="100.0" default="20.0"/>
+
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="10000"
+ convert="invert"/>
+ </vgroup>
+
+ <vgroup>
+ <xscreensaver-updater />
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ </vgroup>
+
+ </hgroup>
+
+ <_description>
+A 3D immersion of of a Klein bottle that smoothly deforms between the
+Etruscan Venus surface, the Roman surface, the Boy surface, and the
+Ida surface. Topologically, all surfaces are Klein bottles, even the
+Roman and Boy surfaces, which are doubly covered and therefore appear
+to be an immersed real projective plane.
+
+You can walk on the Klein bottle or rotate it in 3D. Since all the
+surfaces except the Ida surfaces have points where the surface normal
+is not well defined for some points, walking is performed on the Ida
+surface. Furthermore, it is possible to smoothly deform the surface
+between the Etruscan Venus surface, the Roman surface, the Boy
+surface, and the Ida surface surface while turning it.
+
+Inspired by George K. Francis's book "A Topological Picturebook",
+Springer, 1987, George K. Francis's paper "The Etruscan Venus" in
+P. Concus, R. Finn, and D. A. Hoffman: "Geometric Analysis and
+Computer Graphics", Springer, 1991, and a video entitled "The Etruscan
+Venus" by Donna J. Cox, George K. Francis, and Raymond L. Idaszak,
+presented at SIGGRAPH 1989.
+
+https://en.wikipedia.org/wiki/Boy%27s_surface
+https://en.wikipedia.org/wiki/Roman_surface
+https://en.wikipedia.org/wiki/Klein_bottle
+http://mathworld.wolfram.com/BoySurface.html
+http://mathworld.wolfram.com/RomanSurface.html
+http://mathworld.wolfram.com/EtruscanVenusSurface.html
+http://mathworld.wolfram.com/IdaSurface.html
+
+Written by Carsten Steger; 2020.
+ </_description>
+</screensaver>