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 ;
11 { $description "The menu dedicated to 3D movements of the camera" } ;
18 { $description "The menu dedicated to 4D movements of space" } ;
25 { $description "return gadget containing menu buttons" } ;
27 HELP: model-projection
32 { $description "Project space following coordinate x" } ;
37 { "quot" "quotation" }
39 { $description "return a quotation to orientate space to see it from first point of view" } ;
44 { "quot" "quotation" }
46 { $description "return a quotation to orientate space to see it from second point of view" } ;
51 { "quot" "quotation" }
53 { $description "return a quotation to orientate space to see it from third point of view" } ;
58 { "quot" "quotation" }
60 { $description "return a quotation to orientate space to see it from first point of view" } ;
63 { $description "load space from file" } ;
67 { "m" "a rotation matrix" }
69 { $description "Apply a 4D rotation matrix" } ;
75 { $description "Apply a 4D translation" } ;
78 ARTICLE: "implementation details" "How 4DNav is done"
79 "4DNav is build using :"
87 ARTICLE: "Space file" "Create a new space file"
88 "To build a new space, create an XML file using " { $vocab-link "adsoda" } " model description. A solid is not caracterized by its corners but is defined as the intersection of hyperplanes."
95 <dimension>4</dimension>
98 <dimension>4</dimension>
99 <face>1,0,0,0,100</face>
100 <face>-1,0,0,0,-150</face>
101 <face>0,1,0,0,100</face>
102 <face>0,-1,0,0,-150</face>
103 <face>0,0,1,0,100</face>
104 <face>0,0,-1,0,-150</face>
105 <face>0,0,0,1,100</face>
106 <face>0,0,0,-1,-150</face>
110 <name>4triancube</name>
111 <dimension>4</dimension>
112 <face>1,0,0,0,160</face>
113 <face>-0.4999999999999998,-0.8660254037844387,0,0,-130</face>
114 <face>-0.5000000000000004,0.8660254037844384,0,0,-130</face>
115 <face>0,0,1,0,140</face>
116 <face>0,0,-1,0,-180</face>
117 <face>0,0,0,1,110</face>
118 <face>0,0,0,-1,-180</face>
122 <name>triangone</name>
123 <dimension>4</dimension>
124 <face>1,0,0,0,60</face>
125 <face>0.5,0.8660254037844386,0,0,60</face>
126 <face>-0.5,0.8660254037844387,0,0,-20</face>
127 <face>-1.0,0,0,0,-100</face>
128 <face>-0.5,-0.8660254037844384,0,0,-100</face>
129 <face>0.5,-0.8660254037844387,0,0,-20</face>
130 <face>0,0,1,0,120</face>
131 <face>0,0,-0.4999999999999998,-0.8660254037844387,-120</face>
132 <face>0,0,-0.5000000000000004,0.8660254037844384,-120</face>
136 <direction>1,1,1,1</direction>
137 <color>0.2,0.2,0.6</color>
139 <color>0.8,0.9,0.9</color>
143 ARTICLE: "TODO" "Todo"
145 "A vocab to initialize parameters"
147 { $list "add a face to a solid"
148 "add a solid to the space"
151 "select a solid in a list"
153 "display selected face"
159 "add a tool wich give an hyperplane normal vector with enought points. Will use adsoda.intersect-hyperplanes with { { 0 } { 0 } { 1 } } "
160 "decorrelate 3D camera and activate them with select buttons"
165 ARTICLE: "4DNav" "The 4DNav app"
166 { $vocab-link "4DNav" }
168 { $heading "4D Navigator" }
169 "4DNav is a simple tool to visualize 4 dimensionnal objects."
171 "It uses " { $vocab-link "adsoda" } " library to display a 4D space and navigate thru it."
176 { "4 visualization windows" }
178 "Each visualization window represents the projection of the 4D space on a particular 3D space."
181 "type:" { $code "\"4DNav\" run" }
183 { $heading "Navigation" }
184 "Menu window is divided in 4 areas"
186 { "a space-file chooser to select the file to display" }
187 { "a parametrization area to select the projection mode" }
188 { "4D submenu to translate and rotate the 4D space" }
189 { "3D submenu to move the camera in 3D space. Cameras in every 3D spaces are manipulated as a single one" }
196 "implementation details"