1 USING: accessors assocs euler.b-rep game.models.half-edge
2 kernel locals math.vectors.simd.cords sequences ;
3 IN: euler.b-rep.examples
5 CONSTANT: valid-cube-b-rep
8 T{ face { edge 0 } { next-ring f } { base-face 0 } }
9 T{ face { edge 4 } { next-ring f } { base-face 1 } }
10 T{ face { edge 8 } { next-ring f } { base-face 2 } }
11 T{ face { edge 12 } { next-ring f } { base-face 3 } }
12 T{ face { edge 16 } { next-ring f } { base-face 4 } }
13 T{ face { edge 20 } { next-ring f } { base-face 5 } }
16 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } }
17 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } }
18 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } }
19 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 21 } { next-edge 0 } }
21 T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } }
22 T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } }
23 T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } }
24 T{ b-edge { face 1 } { vertex 0 } { opposite-edge 20 } { next-edge 4 } }
26 T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } }
27 T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } }
28 T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } }
29 T{ b-edge { face 2 } { vertex 4 } { opposite-edge 23 } { next-edge 8 } }
31 T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } }
32 T{ b-edge { face 3 } { vertex 3 } { opposite-edge 18 } { next-edge 14 } }
33 T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } }
34 T{ b-edge { face 3 } { vertex 6 } { opposite-edge 22 } { next-edge 12 } }
36 T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } }
37 T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } }
38 T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } }
39 T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } }
41 T{ b-edge { face 5 } { vertex 4 } { opposite-edge 7 } { next-edge 21 } }
42 T{ b-edge { face 5 } { vertex 0 } { opposite-edge 3 } { next-edge 22 } }
43 T{ b-edge { face 5 } { vertex 2 } { opposite-edge 15 } { next-edge 23 } }
44 T{ b-edge { face 5 } { vertex 6 } { opposite-edge 11 } { next-edge 20 } }
47 T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } }
48 T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } }
49 T{ vertex { position double-4{ 1.0 -1.0 -1.0 0.0 } } { edge 3 } }
50 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } }
51 T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } }
52 T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } }
53 T{ vertex { position double-4{ 1.0 -1.0 1.0 0.0 } } { edge 8 } }
54 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } }
58 CONSTANT: missing-face-cube-b-rep
61 T{ face { edge 0 } { next-ring f } { base-face 0 } }
62 T{ face { edge 4 } { next-ring f } { base-face 1 } }
63 T{ face { edge 8 } { next-ring f } { base-face 2 } }
64 T{ face { edge 12 } { next-ring f } { base-face 3 } }
65 T{ face { edge 16 } { next-ring f } { base-face 4 } }
68 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } }
69 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } }
70 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } }
71 T{ b-edge { face 0 } { vertex 2 } { opposite-edge f } { next-edge 0 } }
73 T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } }
74 T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } }
75 T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } }
76 T{ b-edge { face 1 } { vertex 0 } { opposite-edge f } { next-edge 4 } }
78 T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } }
79 T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } }
80 T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } }
81 T{ b-edge { face 2 } { vertex 4 } { opposite-edge f } { next-edge 8 } }
83 T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } }
84 T{ b-edge { face 3 } { vertex 3 } { opposite-edge f } { next-edge 14 } }
85 T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } }
86 T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } }
88 T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } }
89 T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } }
90 T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } }
91 T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } }
94 T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } }
95 T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } }
96 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } }
97 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } }
98 T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } }
99 T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } }
100 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } }
101 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } }
105 CONSTANT: non-quad-face-cube-b-rep
108 T{ face { edge 0 } { next-ring f } { base-face 0 } }
109 T{ face { edge 4 } { next-ring f } { base-face 1 } }
110 T{ face { edge 8 } { next-ring f } { base-face 2 } }
111 T{ face { edge 12 } { next-ring f } { base-face 3 } }
112 T{ face { edge 18 } { next-ring f } { base-face 4 } }
115 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } }
116 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } }
117 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } }
118 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 19 } { next-edge 0 } }
120 T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } }
121 T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } }
122 T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } }
123 T{ b-edge { face 1 } { vertex 0 } { opposite-edge 18 } { next-edge 4 } }
125 T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } }
126 T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } }
127 T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } }
128 T{ b-edge { face 2 } { vertex 4 } { opposite-edge 21 } { next-edge 8 } }
130 T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } }
131 T{ b-edge { face 3 } { vertex 3 } { opposite-edge 20 } { next-edge 16 } }
132 T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } }
133 T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } }
134 T{ b-edge { face 3 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } }
135 T{ b-edge { face 3 } { vertex 5 } { opposite-edge 9 } { next-edge 14 } }
137 T{ b-edge { face 4 } { vertex 4 } { opposite-edge 7 } { next-edge 19 } }
138 T{ b-edge { face 4 } { vertex 0 } { opposite-edge 3 } { next-edge 20 } }
139 T{ b-edge { face 4 } { vertex 2 } { opposite-edge 15 } { next-edge 21 } }
140 T{ b-edge { face 4 } { vertex 6 } { opposite-edge 11 } { next-edge 18 } }
143 T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } }
144 T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } }
145 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } }
146 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } }
147 T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } }
148 T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } }
149 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } }
150 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } }
154 CONSTANT: multi-ringed-face-cube-b-rep
157 T{ face { edge 0 } { next-ring f } { base-face 0 } }
158 T{ face { edge 4 } { next-ring f } { base-face 1 } }
159 T{ face { edge 8 } { next-ring f } { base-face 2 } }
160 T{ face { edge 12 } { next-ring f } { base-face 3 } }
161 T{ face { edge 16 } { next-ring f } { base-face 4 } }
162 T{ face { edge 20 } { next-ring 6 } { base-face 5 } }
163 T{ face { edge 24 } { next-ring f } { base-face 5 } }
166 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } }
167 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } }
168 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } }
169 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 21 } { next-edge 0 } }
171 T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } }
172 T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } }
173 T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } }
174 T{ b-edge { face 1 } { vertex 0 } { opposite-edge 20 } { next-edge 4 } }
176 T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } }
177 T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } }
178 T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } }
179 T{ b-edge { face 2 } { vertex 4 } { opposite-edge 23 } { next-edge 8 } }
181 T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } }
182 T{ b-edge { face 3 } { vertex 3 } { opposite-edge 22 } { next-edge 14 } }
183 T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } }
184 T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } }
186 T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } }
187 T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } }
188 T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } }
189 T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } }
191 T{ b-edge { face 5 } { vertex 4 } { opposite-edge 7 } { next-edge 21 } }
192 T{ b-edge { face 5 } { vertex 0 } { opposite-edge 3 } { next-edge 22 } }
193 T{ b-edge { face 5 } { vertex 2 } { opposite-edge 15 } { next-edge 23 } }
194 T{ b-edge { face 5 } { vertex 6 } { opposite-edge 11 } { next-edge 20 } }
196 T{ b-edge { face 6 } { vertex 8 } { opposite-edge f } { next-edge 25 } }
197 T{ b-edge { face 6 } { vertex 9 } { opposite-edge f } { next-edge 26 } }
198 T{ b-edge { face 6 } { vertex 10 } { opposite-edge f } { next-edge 27 } }
199 T{ b-edge { face 6 } { vertex 11 } { opposite-edge f } { next-edge 24 } }
202 T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } }
203 T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } }
204 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } }
205 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } }
206 T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } }
207 T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } }
208 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } }
209 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } }
211 T{ vertex { position double-4{ -1.0 -1.0 0.5 0.0 } } { edge 24 } }
212 T{ vertex { position double-4{ -1.0 -1.0 -0.5 0.0 } } { edge 25 } }
213 T{ vertex { position double-4{ 1.0 1.0 -0.5 0.0 } } { edge 26 } }
214 T{ vertex { position double-4{ 1.0 1.0 0.5 0.0 } } { edge 27 } }
218 CONSTANT: valid-multi-valence-b-rep
221 T{ b-edge { face 0 } { vertex 23 } { opposite-edge 12 } { next-edge 1 } }
222 T{ b-edge { face 0 } { vertex 22 } { opposite-edge 8 } { next-edge 2 } }
223 T{ b-edge { face 0 } { vertex 20 } { opposite-edge 4 } { next-edge 3 } }
224 T{ b-edge { face 0 } { vertex 21 } { opposite-edge 16 } { next-edge 0 } }
226 T{ b-edge { face 1 } { vertex 21 } { opposite-edge 2 } { next-edge 5 } }
227 T{ b-edge { face 1 } { vertex 20 } { opposite-edge 11 } { next-edge 6 } }
228 T{ b-edge { face 1 } { vertex 16 } { opposite-edge 20 } { next-edge 7 } }
229 T{ b-edge { face 1 } { vertex 17 } { opposite-edge 17 } { next-edge 4 } }
231 T{ b-edge { face 2 } { vertex 20 } { opposite-edge 1 } { next-edge 9 } }
232 T{ b-edge { face 2 } { vertex 22 } { opposite-edge 15 } { next-edge 10 } }
233 T{ b-edge { face 2 } { vertex 18 } { opposite-edge 24 } { next-edge 11 } }
234 T{ b-edge { face 2 } { vertex 16 } { opposite-edge 5 } { next-edge 8 } }
236 T{ b-edge { face 3 } { vertex 22 } { opposite-edge 0 } { next-edge 13 } }
237 T{ b-edge { face 3 } { vertex 23 } { opposite-edge 19 } { next-edge 14 } }
238 T{ b-edge { face 3 } { vertex 19 } { opposite-edge 28 } { next-edge 15 } }
239 T{ b-edge { face 3 } { vertex 18 } { opposite-edge 9 } { next-edge 12 } }
241 T{ b-edge { face 4 } { vertex 23 } { opposite-edge 3 } { next-edge 17 } }
242 T{ b-edge { face 4 } { vertex 21 } { opposite-edge 7 } { next-edge 18 } }
243 T{ b-edge { face 4 } { vertex 17 } { opposite-edge 32 } { next-edge 19 } }
244 T{ b-edge { face 4 } { vertex 19 } { opposite-edge 13 } { next-edge 16 } }
246 T{ b-edge { face 5 } { vertex 17 } { opposite-edge 6 } { next-edge 21 } }
247 T{ b-edge { face 5 } { vertex 16 } { opposite-edge 27 } { next-edge 22 } }
248 T{ b-edge { face 5 } { vertex 0 } { opposite-edge 36 } { next-edge 23 } }
249 T{ b-edge { face 5 } { vertex 1 } { opposite-edge 33 } { next-edge 20 } }
251 T{ b-edge { face 6 } { vertex 16 } { opposite-edge 10 } { next-edge 25 } }
252 T{ b-edge { face 6 } { vertex 18 } { opposite-edge 31 } { next-edge 26 } }
253 T{ b-edge { face 6 } { vertex 2 } { opposite-edge 44 } { next-edge 27 } }
254 T{ b-edge { face 6 } { vertex 0 } { opposite-edge 21 } { next-edge 24 } }
256 T{ b-edge { face 7 } { vertex 18 } { opposite-edge 14 } { next-edge 29 } }
257 T{ b-edge { face 7 } { vertex 19 } { opposite-edge 35 } { next-edge 30 } }
258 T{ b-edge { face 7 } { vertex 3 } { opposite-edge 52 } { next-edge 31 } }
259 T{ b-edge { face 7 } { vertex 2 } { opposite-edge 25 } { next-edge 28 } }
261 T{ b-edge { face 8 } { vertex 19 } { opposite-edge 18 } { next-edge 33 } }
262 T{ b-edge { face 8 } { vertex 17 } { opposite-edge 23 } { next-edge 34 } }
263 T{ b-edge { face 8 } { vertex 1 } { opposite-edge 60 } { next-edge 35 } }
264 T{ b-edge { face 8 } { vertex 3 } { opposite-edge 29 } { next-edge 32 } }
266 T{ b-edge { face 9 } { vertex 1 } { opposite-edge 22 } { next-edge 37 } }
267 T{ b-edge { face 9 } { vertex 0 } { opposite-edge 43 } { next-edge 38 } }
268 T{ b-edge { face 9 } { vertex 8 } { opposite-edge 68 } { next-edge 39 } }
269 T{ b-edge { face 9 } { vertex 9 } { opposite-edge 65 } { next-edge 36 } }
271 T{ b-edge { face 10 } { vertex 0 } { opposite-edge 47 } { next-edge 41 } }
272 T{ b-edge { face 10 } { vertex 10 } { opposite-edge 73 } { next-edge 42 } }
273 T{ b-edge { face 10 } { vertex 24 } { opposite-edge 72 } { next-edge 43 } }
274 T{ b-edge { face 10 } { vertex 8 } { opposite-edge 37 } { next-edge 40 } }
276 T{ b-edge { face 11 } { vertex 0 } { opposite-edge 26 } { next-edge 45 } }
277 T{ b-edge { face 11 } { vertex 2 } { opposite-edge 51 } { next-edge 46 } }
278 T{ b-edge { face 11 } { vertex 12 } { opposite-edge 76 } { next-edge 47 } }
279 T{ b-edge { face 11 } { vertex 10 } { opposite-edge 40 } { next-edge 44 } }
281 T{ b-edge { face 12 } { vertex 2 } { opposite-edge 55 } { next-edge 49 } }
282 T{ b-edge { face 12 } { vertex 14 } { opposite-edge 81 } { next-edge 50 } }
283 T{ b-edge { face 12 } { vertex 26 } { opposite-edge 80 } { next-edge 51 } }
284 T{ b-edge { face 12 } { vertex 12 } { opposite-edge 45 } { next-edge 48 } }
286 T{ b-edge { face 13 } { vertex 2 } { opposite-edge 30 } { next-edge 53 } }
287 T{ b-edge { face 13 } { vertex 3 } { opposite-edge 59 } { next-edge 54 } }
288 T{ b-edge { face 13 } { vertex 15 } { opposite-edge 84 } { next-edge 55 } }
289 T{ b-edge { face 13 } { vertex 14 } { opposite-edge 48 } { next-edge 52 } }
291 T{ b-edge { face 14 } { vertex 3 } { opposite-edge 63 } { next-edge 57 } }
292 T{ b-edge { face 14 } { vertex 13 } { opposite-edge 89 } { next-edge 58 } }
293 T{ b-edge { face 14 } { vertex 27 } { opposite-edge 88 } { next-edge 59 } }
294 T{ b-edge { face 14 } { vertex 15 } { opposite-edge 53 } { next-edge 56 } }
296 T{ b-edge { face 15 } { vertex 3 } { opposite-edge 34 } { next-edge 61 } }
297 T{ b-edge { face 15 } { vertex 1 } { opposite-edge 64 } { next-edge 62 } }
298 T{ b-edge { face 15 } { vertex 11 } { opposite-edge 92 } { next-edge 63 } }
299 T{ b-edge { face 15 } { vertex 13 } { opposite-edge 56 } { next-edge 60 } }
301 T{ b-edge { face 16 } { vertex 11 } { opposite-edge 61 } { next-edge 65 } }
302 T{ b-edge { face 16 } { vertex 1 } { opposite-edge 39 } { next-edge 66 } }
303 T{ b-edge { face 16 } { vertex 9 } { opposite-edge 97 } { next-edge 67 } }
304 T{ b-edge { face 16 } { vertex 25 } { opposite-edge 96 } { next-edge 64 } }
306 T{ b-edge { face 17 } { vertex 9 } { opposite-edge 38 } { next-edge 69 } }
307 T{ b-edge { face 17 } { vertex 8 } { opposite-edge 75 } { next-edge 70 } }
308 T{ b-edge { face 17 } { vertex 4 } { opposite-edge 102 } { next-edge 71 } }
309 T{ b-edge { face 17 } { vertex 5 } { opposite-edge 98 } { next-edge 68 } }
311 T{ b-edge { face 18 } { vertex 8 } { opposite-edge 42 } { next-edge 73 } }
312 T{ b-edge { face 18 } { vertex 24 } { opposite-edge 41 } { next-edge 74 } }
313 T{ b-edge { face 18 } { vertex 10 } { opposite-edge 79 } { next-edge 75 } }
314 T{ b-edge { face 18 } { vertex 4 } { opposite-edge 69 } { next-edge 72 } }
316 T{ b-edge { face 19 } { vertex 10 } { opposite-edge 46 } { next-edge 77 } }
317 T{ b-edge { face 19 } { vertex 12 } { opposite-edge 83 } { next-edge 78 } }
318 T{ b-edge { face 19 } { vertex 6 } { opposite-edge 103 } { next-edge 79 } }
319 T{ b-edge { face 19 } { vertex 4 } { opposite-edge 74 } { next-edge 76 } }
321 T{ b-edge { face 20 } { vertex 12 } { opposite-edge 50 } { next-edge 81 } }
322 T{ b-edge { face 20 } { vertex 26 } { opposite-edge 49 } { next-edge 82 } }
323 T{ b-edge { face 20 } { vertex 14 } { opposite-edge 87 } { next-edge 83 } }
324 T{ b-edge { face 20 } { vertex 6 } { opposite-edge 77 } { next-edge 80 } }
326 T{ b-edge { face 21 } { vertex 14 } { opposite-edge 54 } { next-edge 85 } }
327 T{ b-edge { face 21 } { vertex 15 } { opposite-edge 91 } { next-edge 86 } }
328 T{ b-edge { face 21 } { vertex 7 } { opposite-edge 100 } { next-edge 87 } }
329 T{ b-edge { face 21 } { vertex 6 } { opposite-edge 82 } { next-edge 84 } }
331 T{ b-edge { face 22 } { vertex 15 } { opposite-edge 58 } { next-edge 89 } }
332 T{ b-edge { face 22 } { vertex 27 } { opposite-edge 57 } { next-edge 90 } }
333 T{ b-edge { face 22 } { vertex 13 } { opposite-edge 95 } { next-edge 91 } }
334 T{ b-edge { face 22 } { vertex 7 } { opposite-edge 85 } { next-edge 88 } }
336 T{ b-edge { face 23 } { vertex 13 } { opposite-edge 62 } { next-edge 93 } }
337 T{ b-edge { face 23 } { vertex 11 } { opposite-edge 99 } { next-edge 94 } }
338 T{ b-edge { face 23 } { vertex 5 } { opposite-edge 101 } { next-edge 95 } }
339 T{ b-edge { face 23 } { vertex 7 } { opposite-edge 90 } { next-edge 92 } }
341 T{ b-edge { face 24 } { vertex 11 } { opposite-edge 67 } { next-edge 97 } }
342 T{ b-edge { face 24 } { vertex 25 } { opposite-edge 66 } { next-edge 98 } }
343 T{ b-edge { face 24 } { vertex 9 } { opposite-edge 71 } { next-edge 99 } }
344 T{ b-edge { face 24 } { vertex 5 } { opposite-edge 93 } { next-edge 96 } }
346 T{ b-edge { face 25 } { vertex 6 } { opposite-edge 86 } { next-edge 101 } }
347 T{ b-edge { face 25 } { vertex 7 } { opposite-edge 94 } { next-edge 102 } }
348 T{ b-edge { face 25 } { vertex 5 } { opposite-edge 70 } { next-edge 103 } }
349 T{ b-edge { face 25 } { vertex 4 } { opposite-edge 78 } { next-edge 100 } }
352 T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 37 } }
353 T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 36 } }
354 T{ vertex { position double-4{ 1.0 -1.0 1.0 0.0 } } { edge 52 } }
355 T{ vertex { position double-4{ 1.0 -1.0 -1.0 0.0 } } { edge 53 } }
357 T{ vertex { position double-4{ 3.0 1.0 1.0 0.0 } } { edge 70 } }
358 T{ vertex { position double-4{ 3.0 1.0 -1.0 0.0 } } { edge 71 } }
359 T{ vertex { position double-4{ 3.0 -1.0 1.0 0.0 } } { edge 87 } }
360 T{ vertex { position double-4{ 3.0 -1.0 -1.0 0.0 } } { edge 86 } }
362 T{ vertex { position double-4{ 2.0 2.0 1.0 0.0 } } { edge 38 } }
363 T{ vertex { position double-4{ 2.0 2.0 -1.0 0.0 } } { edge 39 } }
364 T{ vertex { position double-4{ 2.0 1.0 2.0 0.0 } } { edge 47 } }
365 T{ vertex { position double-4{ 2.0 1.0 -2.0 0.0 } } { edge 62 } }
367 T{ vertex { position double-4{ 2.0 -1.0 2.0 0.0 } } { edge 51 } }
368 T{ vertex { position double-4{ 2.0 -1.0 -2.0 0.0 } } { edge 57 } }
369 T{ vertex { position double-4{ 2.0 -2.0 1.0 0.0 } } { edge 55 } }
370 T{ vertex { position double-4{ 2.0 -2.0 -1.0 0.0 } } { edge 54 } }
372 T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 6 } }
373 T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 7 } }
374 T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 15 } }
375 T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 14 } }
377 T{ vertex { position double-4{ -2.0 1.0 1.0 0.0 } } { edge 2 } }
378 T{ vertex { position double-4{ -2.0 1.0 -1.0 0.0 } } { edge 3 } }
379 T{ vertex { position double-4{ -2.0 -1.0 1.0 0.0 } } { edge 1 } }
380 T{ vertex { position double-4{ -2.0 -1.0 -1.0 0.0 } } { edge 0 } }
382 T{ vertex { position double-4{ 2.0 2.0 2.0 0.0 } } { edge 42 } }
383 T{ vertex { position double-4{ 2.0 2.0 -2.0 0.0 } } { edge 67 } }
384 T{ vertex { position double-4{ 2.0 -2.0 2.0 0.0 } } { edge 50 } }
385 T{ vertex { position double-4{ 2.0 -2.0 -2.0 0.0 } } { edge 58 } }
388 T{ face { edge 0 } { next-ring f } { base-face 0 } }
389 T{ face { edge 4 } { next-ring f } { base-face 1 } }
390 T{ face { edge 8 } { next-ring f } { base-face 2 } }
391 T{ face { edge 12 } { next-ring f } { base-face 3 } }
392 T{ face { edge 16 } { next-ring f } { base-face 4 } }
393 T{ face { edge 20 } { next-ring f } { base-face 5 } }
394 T{ face { edge 24 } { next-ring f } { base-face 6 } }
395 T{ face { edge 28 } { next-ring f } { base-face 7 } }
396 T{ face { edge 32 } { next-ring f } { base-face 8 } }
397 T{ face { edge 36 } { next-ring f } { base-face 9 } }
398 T{ face { edge 40 } { next-ring f } { base-face 10 } }
399 T{ face { edge 44 } { next-ring f } { base-face 11 } }
400 T{ face { edge 48 } { next-ring f } { base-face 12 } }
401 T{ face { edge 52 } { next-ring f } { base-face 13 } }
402 T{ face { edge 56 } { next-ring f } { base-face 14 } }
403 T{ face { edge 60 } { next-ring f } { base-face 15 } }
404 T{ face { edge 64 } { next-ring f } { base-face 16 } }
405 T{ face { edge 68 } { next-ring f } { base-face 17 } }
406 T{ face { edge 72 } { next-ring f } { base-face 18 } }
407 T{ face { edge 76 } { next-ring f } { base-face 19 } }
408 T{ face { edge 80 } { next-ring f } { base-face 20 } }
409 T{ face { edge 84 } { next-ring f } { base-face 21 } }
410 T{ face { edge 88 } { next-ring f } { base-face 22 } }
411 T{ face { edge 92 } { next-ring f } { base-face 23 } }
412 T{ face { edge 96 } { next-ring f } { base-face 24 } }
413 T{ face { edge 100 } { next-ring f } { base-face 25 } }
417 CONSTANT: degenerate-incomplete-face
420 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 5 } { next-edge 1 } }
421 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 4 } { next-edge 2 } }
422 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 3 } { next-edge 3 } }
423 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 2 } { next-edge 4 } }
424 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 1 } { next-edge 5 } }
425 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 0 } { next-edge 0 } }
428 T{ vertex { position double-4{ -1 -1 0 0 } } { edge 0 } }
429 T{ vertex { position double-4{ 1 -1 0 0 } } { edge 1 } }
430 T{ vertex { position double-4{ 1 1 0 0 } } { edge 2 } }
431 T{ vertex { position double-4{ -1 1 0 0 } } { edge 3 } }
434 T{ face { edge 0 } { next-ring f } { base-face 0 } }
438 CONSTANT: partially-degenerate-second-face
441 T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } }
442 T{ b-edge { face 0 } { vertex 1 } { opposite-edge 5 } { next-edge 2 } }
443 T{ b-edge { face 0 } { vertex 2 } { opposite-edge 4 } { next-edge 3 } }
444 T{ b-edge { face 0 } { vertex 3 } { opposite-edge 9 } { next-edge 0 } }
446 T{ b-edge { face 1 } { vertex 3 } { opposite-edge 2 } { next-edge 5 } }
447 T{ b-edge { face 1 } { vertex 2 } { opposite-edge 1 } { next-edge 6 } }
448 T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } }
449 T{ b-edge { face 1 } { vertex 0 } { opposite-edge 8 } { next-edge 8 } }
450 T{ b-edge { face 1 } { vertex 4 } { opposite-edge 7 } { next-edge 9 } }
451 T{ b-edge { face 1 } { vertex 0 } { opposite-edge 3 } { next-edge 4 } }
454 T{ vertex { position double-4{ -1 -1 0 0 } } { edge 0 } }
455 T{ vertex { position double-4{ 1 -1 0 0 } } { edge 1 } }
456 T{ vertex { position double-4{ 1 1 0 0 } } { edge 2 } }
457 T{ vertex { position double-4{ -1 1 0 0 } } { edge 3 } }
458 T{ vertex { position double-4{ -2 -2 0 0 } } { edge 8 } }
461 T{ face { edge 0 } { next-ring f } { base-face 0 } }
462 T{ face { edge 4 } { next-ring f } { base-face 1 } }
466 : nth-when ( index/f seq -- elt/f )
467 over [ nth ] [ 2drop f ] if ; inline
469 :: connect-b-rep ( b-rep -- )
471 [ b-rep edges>> nth-when ] change-edge
472 [ b-rep faces>> nth-when ] change-next-ring
473 [ b-rep faces>> nth-when ] change-base-face
478 [ b-rep edges>> nth-when ] change-edge
483 [ b-rep faces>> nth-when ] change-face
484 [ b-rep vertices>> nth-when ] change-vertex
485 [ b-rep edges>> nth-when ] change-opposite-edge
486 [ b-rep edges>> nth-when ] change-next-edge
490 :: disconnect-b-rep ( b-rep -- )
491 b-rep faces>> >index-hash :> face-indices
492 b-rep edges>> >index-hash :> edge-indices
493 b-rep vertices>> >index-hash :> vertex-indices
496 [ edge-indices at ] change-edge
497 [ face-indices at ] change-next-ring
498 [ face-indices at ] change-base-face
503 [ edge-indices at ] change-edge
508 [ face-indices at ] change-face
509 [ vertex-indices at ] change-vertex
510 [ edge-indices at ] change-opposite-edge
511 [ edge-indices at ] change-next-edge
515 valid-cube-b-rep connect-b-rep
516 missing-face-cube-b-rep connect-b-rep
517 non-quad-face-cube-b-rep connect-b-rep
518 multi-ringed-face-cube-b-rep connect-b-rep
519 valid-multi-valence-b-rep connect-b-rep
520 degenerate-incomplete-face connect-b-rep
521 partially-degenerate-second-face connect-b-rep