Clean up some duplication
[factor/jcg.git] / extra / 4DNav / 4DNav-docs.factor
blobd4bf1db87dc3fd779bd23db25ae1e1d6e2ffbbeb
1 ! Copyright (C) 2008 Jean-François Bigot.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: help.markup help.syntax kernel quotations strings ;
4 IN: 4DNav
6 HELP: (mvt-4D)
7 { $values
8      { "quot" quotation }
10 { $description "" } ;
12 HELP: 4D-Rxw
13 { $values
14      { "angle" null }
15      { "Rz" null }
17 { $description "" } ;
19 HELP: 4D-Rxy
20 { $values
21      { "angle" null }
22      { "Rx" null }
24 { $description "" } ;
26 HELP: 4D-Rxz
27 { $values
28      { "angle" null }
29      { "Ry" null }
31 { $description "" } ;
33 HELP: 4D-Ryw
34 { $values
35      { "angle" null }
36      { "Ry" null }
38 { $description "" } ;
40 HELP: 4D-Ryz
41 { $values
42      { "angle" null }
43      { "Rx" null }
45 { $description "" } ;
47 HELP: 4D-Rzw
48 { $values
49      { "angle" null }
50      { "Rz" null }
52 { $description "" } ;
54 HELP: 4DNav
55 { $description "" } ;
57 HELP: >observer3d
58 { $values
59      { "value" null }
61 { $description "" } ;
63 HELP: >present-space
64 { $values
65      { "value" null }
67 { $description "" } ;
70 HELP: >view1
71 { $values
72      { "value" null }
74 { $description "" } ;
76 HELP: >view2
77 { $values
78      { "value" null }
80 { $description "" } ;
82 HELP: >view3
83 { $values
84      { "value" null }
86 { $description "" } ;
88 HELP: >view4
89 { $values
90      { "value" null }
92 { $description "" } ;
94 HELP: add-keyboard-delegate
95 { $values
96      { "obj" object }
97      { "obj" object }
99 { $description "" } ;
101 HELP: button*
102 { $values
103      { "string" string } { "quot" quotation }
104      { "button" null }
106 { $description "" } ;
108 HELP: camera-action
109 { $values
110      { "quot" quotation }
111      { "quot" quotation }
113 { $description "" } ;
115 HELP: camera-button
116 { $values
117      { "string" string } { "quot" quotation }
118      { "button" null }
120 { $description "" } ;
122 HELP: controller-window*
123 { $values
124      { "gadget" "a gadget" } 
126 { $description "" } ;
129 HELP: init-models
130 { $description "" } ;
132 HELP: init-variables
133 { $description "" } ;
135 HELP: menu-3D
136 { $values
137      { "gadget" null }
139 { $description "The menu dedicated to 3D movements of the camera" } ;
141 HELP: menu-4D
142 { $values
143     
144      { "gadget" null }
146 { $description "The menu dedicated to 4D movements of space" } ;
148 HELP: menu-bar
149 { $values
150     
151      { "gadget" null }
153 { $description "return gadget containing menu buttons" } ;
155 HELP: model-projection
156 { $values
157      { "x" null }
158      { "space" null }
160 { $description "Project space following coordinate x" } ;
162 HELP: mvt-3D-1
163 { $values
164     
165      { "quot" quotation }
167 { $description "return a quotation to orientate space to see it from first point of view" } ;
169 HELP: mvt-3D-2
170 { $values
171     
172      { "quot" quotation }
174 { $description "return a quotation to orientate space to see it from second point of view" } ;
176 HELP: mvt-3D-3
177 { $values
178     
179      { "quot" quotation }
181 { $description "return a quotation to orientate space to see it from third point of view" } ;
183 HELP: mvt-3D-4
184 { $values
185     
186      { "quot" quotation }
188 { $description "return a quotation to orientate space to see it from first point of view" } ;
190 HELP: observer3d
191 { $description "" } ;
193 HELP: observer3d>
194 { $values
195     
196      { "value" null }
198 { $description "" } ;
200 HELP: present-space
201 { $description "" } ;
203 HELP: present-space>
204 { $values
205     
206      { "value" null }
208 { $description "" } ;
210 HELP: load-model-file
211 { $description "load space from file" } ;
213 HELP: rotation-4D
214 { $values
215      { "m" "a rotation matrix" }
217 { $description "Apply a 4D rotation matrix" } ;
219 HELP: translation-4D
220 { $values
221      { "v" null }
223 { $description "" } ;
225 HELP: update-model-projections
226 { $description "" } ;
228 HELP: update-observer-projections
229 { $description "" } ;
231 HELP: view1
232 { $description "" } ;
234 HELP: view1>
235 { $values
236     
237      { "value" null }
239 { $description "" } ;
241 HELP: view2
242 { $description "" } ;
244 HELP: view2>
245 { $values
246     
247      { "value" null }
249 { $description "" } ;
251 HELP: view3
252 { $description "" } ;
254 HELP: view3>
255 { $values
256     
257      { "value" null }
259 { $description "" } ;
261 HELP: view4
262 { $description "" } ;
264 HELP: view4>
265 { $values
266     
267      { "value" null }
269 { $description "" } ;
271 HELP: viewer-windows*
272 { $description "" } ;
274 HELP: win3D
275 { $values
276      { "text" null } { "gadget" null }
278 { $description "" } ;
280 HELP: windows
281 { $description "" } ;
283 ARTICLE: "Space file" "Create a new space file"
284 "\nTo build a new space, create an XML file using " { $vocab-link "adsoda" } " model description. \nAn example is:"
287 "\n<model>"
288 "\n<space>"
289 "\n <dimension>4</dimension>"
290 "\n <solid>"
291 "\n     <name>4cube1</name>"
292 "\n     <dimension>4</dimension>"
293 "\n     <face>1,0,0,0,100</face>"
294 "\n     <face>-1,0,0,0,-150</face>"
295 "\n     <face>0,1,0,0,100</face>"
296 "\n     <face>0,-1,0,0,-150</face>"
297 "\n     <face>0,0,1,0,100</face>"
298 "\n     <face>0,0,-1,0,-150</face>"
299 "\n     <face>0,0,0,1,100</face>"
300 "\n     <face>0,0,0,-1,-150</face>"
301 "\n     <color>1,0,0</color>"
302 "\n </solid>"
303 "\n <solid>"
304 "\n     <name>4triancube</name>"
305 "\n     <dimension>4</dimension>"
306 "\n     <face>1,0,0,0,160</face>"
307 "\n     <face>-0.4999999999999998,-0.8660254037844387,0,0,-130</face>"
308 "\n     <face>-0.5000000000000004,0.8660254037844384,0,0,-130</face>"
309 "\n     <face>0,0,1,0,140</face>"
310 "\n     <face>0,0,-1,0,-180</face>"
311 "\n     <face>0,0,0,1,110</face>"
312 "\n     <face>0,0,0,-1,-180</face>"
313 "\n     <color>0,1,0</color>"
314 "\n </solid>"
315 "\n <solid>"
316 "\n     <name>triangone</name>"
317 "\n     <dimension>4</dimension>"
318 "\n     <face>1,0,0,0,60</face>"
319 "\n     <face>0.5,0.8660254037844386,0,0,60</face>"
320 "\n     <face>-0.5,0.8660254037844387,0,0,-20</face>"
321 "\n     <face>-1.0,0,0,0,-100</face>"
322 "\n     <face>-0.5,-0.8660254037844384,0,0,-100</face>"
323 "\n     <face>0.5,-0.8660254037844387,0,0,-20</face>"
324 "\n     <face>0,0,1,0,120</face>"
325 "\n     <face>0,0,-0.4999999999999998,-0.8660254037844387,-120</face>"
326 "\n     <face>0,0,-0.5000000000000004,0.8660254037844384,-120</face>"
327 "\n     <color>0,1,1</color>"
328 "\n </solid>"
329 "\n <light>"
330 "\n     <direction>1,1,1,1</direction>"
331 "\n     <color>0.2,0.2,0.6</color>"
332 "\n </light>"
333 "\n <color>0.8,0.9,0.9</color>"
334 "\n</space>"
335 "\n</model>"
340 ARTICLE: "TODO" "Todo"
341 { $list 
342     "A file chooser"
343     "A vocab to initialize parameters"
344     "an editor mode" 
345         { $list "add a face to a solid"
346                 "add a solid to the space"
347                 "move a face"
348                 "move a solid"
349                 "select a solid in a list"
350                 "select a face"
351                 "display selected face"
352                 "edit a solid color"
353                 "add a light"
354                 "edit a light color"
355                 "move a light"
356                 }
357     "add a tool wich give an hyperplane normal vector with enought points. Will use adsoda.intersect-hyperplanes with { { 0 } { 0 } { 1 } } "
358     "decorrelate 3D camera and activate them with select buttons"
362 } ;
365 ARTICLE: "4DNav" "4DNav"
366 { $vocab-link "4DNav" }
368 { $heading "4D Navigator" }
369 "4DNav is a simple tool to visualize 4 dimensionnal objects."
370 "\n"
371 "It uses " { $vocab-link "adsoda" } " library to display a 4D space and navigate thru it."
373 "It will display:"
374 { $list
375     { "a menu window" }
376     {  "4 visualization windows" }
378 "Each window represents the projection of the 4D space on a particular 3D space."
381 { $heading "Initialization" }
382 "put the space file " { $strong "space-exemple.xml" } "  in temp directory"
383 " and then type:" { $code "\"4DNav\" run" } 
384 { $heading "Navigation" }
385 "4D submenu move the space in translations and rotation."
386 "\n3D submenu move the camera in 3D space. Cameras in every 3D spaces are manipulated as a single one"
392 { $heading "Links" }
393 { $subsection "Space file" }
395 { $subsection "TODO" }
400 ABOUT: "4DNav"