summaryrefslogtreecommitdiffstats
path: root/hacks/config/romanboy.xml
blob: b2f6cb4596686c6f8500b425db20693ad2f1546e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?xml version="1.0" encoding="UTF-8"?>

<screensaver name="romanboy" _label="RomanBoy" gl="yes">

  <video href="https://www.youtube.com/watch?v=KEW5TuPbWyg"/>

  <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>

    <number id="surface-order" type="spinbutton" arg="-surface-order %"
            _label="Order of the surface" low="2" high="9" default="3"/>

    <boolean id="orientation-marks" _label="Show orientation marks"
              arg-set="-orientation-marks"/>
  </hgroup>

  <hgroup>
    <boolean id="deform" _label="Deform the projective plane"
              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="1000.0"
            low="0.0" high="1000.0" default="1000.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="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>

      <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 the real projective plane that smoothly deforms
between the Roman surface and the Boy surface.

You can walk on the surface of the real projective plane or rotate it
in 3D.  Furthermore, it is possible to smoothly deform the real
projective plane between the Roman surface and the Boy surface while
turning it or walking on it.  Inspired by François Apéry's book
"Models of the Real Projective Plane", Vieweg, 1987.

https://en.wikipedia.org/wiki/Boy%27s_surface
https://en.wikipedia.org/wiki/Roman_surface
http://mathworld.wolfram.com/BoySurface.html
http://mathworld.wolfram.com/RomanSurface.html

Written by Carsten Steger; 2014.
  </_description>
</screensaver>