USING: accessors assocs euler.b-rep game.models.half-edge kernel locals math.vectors.simd.cords sequences ; IN: euler.b-rep.examples CONSTANT: valid-cube-b-rep T{ b-rep { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } T{ face { edge 8 } { next-ring f } { base-face 2 } } T{ face { edge 12 } { next-ring f } { base-face 3 } } T{ face { edge 16 } { next-ring f } { base-face 4 } } T{ face { edge 20 } { next-ring f } { base-face 5 } } } } { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 21 } { next-edge 0 } } T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge 20 } { next-edge 4 } } T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } } T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } } T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } } T{ b-edge { face 2 } { vertex 4 } { opposite-edge 23 } { next-edge 8 } } T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } } T{ b-edge { face 3 } { vertex 3 } { opposite-edge 18 } { next-edge 14 } } T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } } T{ b-edge { face 3 } { vertex 6 } { opposite-edge 22 } { next-edge 12 } } T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } } T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } } T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } } T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } } T{ b-edge { face 5 } { vertex 4 } { opposite-edge 7 } { next-edge 21 } } T{ b-edge { face 5 } { vertex 0 } { opposite-edge 3 } { next-edge 22 } } T{ b-edge { face 5 } { vertex 2 } { opposite-edge 15 } { next-edge 23 } } T{ b-edge { face 5 } { vertex 6 } { opposite-edge 11 } { next-edge 20 } } } } { vertices { T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } } T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } } T{ vertex { position double-4{ 1.0 -1.0 -1.0 0.0 } } { edge 3 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } } T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } } T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } } T{ vertex { position double-4{ 1.0 -1.0 1.0 0.0 } } { edge 8 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } } } } } CONSTANT: missing-face-cube-b-rep T{ b-rep { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } T{ face { edge 8 } { next-ring f } { base-face 2 } } T{ face { edge 12 } { next-ring f } { base-face 3 } } T{ face { edge 16 } { next-ring f } { base-face 4 } } } } { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge f } { next-edge 0 } } T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge f } { next-edge 4 } } T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } } T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } } T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } } T{ b-edge { face 2 } { vertex 4 } { opposite-edge f } { next-edge 8 } } T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } } T{ b-edge { face 3 } { vertex 3 } { opposite-edge f } { next-edge 14 } } T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } } T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } } T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } } T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } } T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } } T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } } } } { vertices { T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } } T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } } T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } } T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } } } } } CONSTANT: non-quad-face-cube-b-rep T{ b-rep { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } T{ face { edge 8 } { next-ring f } { base-face 2 } } T{ face { edge 12 } { next-ring f } { base-face 3 } } T{ face { edge 18 } { next-ring f } { base-face 4 } } } } { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 19 } { next-edge 0 } } T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge 18 } { next-edge 4 } } T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } } T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } } T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } } T{ b-edge { face 2 } { vertex 4 } { opposite-edge 21 } { next-edge 8 } } T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } } T{ b-edge { face 3 } { vertex 3 } { opposite-edge 20 } { next-edge 16 } } T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } } T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } } T{ b-edge { face 3 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } } T{ b-edge { face 3 } { vertex 5 } { opposite-edge 9 } { next-edge 14 } } T{ b-edge { face 4 } { vertex 4 } { opposite-edge 7 } { next-edge 19 } } T{ b-edge { face 4 } { vertex 0 } { opposite-edge 3 } { next-edge 20 } } T{ b-edge { face 4 } { vertex 2 } { opposite-edge 15 } { next-edge 21 } } T{ b-edge { face 4 } { vertex 6 } { opposite-edge 11 } { next-edge 18 } } } } { vertices { T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } } T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } } T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } } T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } } } } } CONSTANT: multi-ringed-face-cube-b-rep T{ b-rep { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } T{ face { edge 8 } { next-ring f } { base-face 2 } } T{ face { edge 12 } { next-ring f } { base-face 3 } } T{ face { edge 16 } { next-ring f } { base-face 4 } } T{ face { edge 20 } { next-ring 6 } { base-face 5 } } T{ face { edge 24 } { next-ring f } { base-face 5 } } } } { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 19 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 12 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 21 } { next-edge 0 } } T{ b-edge { face 1 } { vertex 4 } { opposite-edge 10 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 5 } { opposite-edge 16 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge 20 } { next-edge 4 } } T{ b-edge { face 2 } { vertex 6 } { opposite-edge 14 } { next-edge 9 } } T{ b-edge { face 2 } { vertex 7 } { opposite-edge 17 } { next-edge 10 } } T{ b-edge { face 2 } { vertex 5 } { opposite-edge 4 } { next-edge 11 } } T{ b-edge { face 2 } { vertex 4 } { opposite-edge 23 } { next-edge 8 } } T{ b-edge { face 3 } { vertex 2 } { opposite-edge 2 } { next-edge 13 } } T{ b-edge { face 3 } { vertex 3 } { opposite-edge 22 } { next-edge 14 } } T{ b-edge { face 3 } { vertex 7 } { opposite-edge 8 } { next-edge 15 } } T{ b-edge { face 3 } { vertex 6 } { opposite-edge 18 } { next-edge 12 } } T{ b-edge { face 4 } { vertex 1 } { opposite-edge 5 } { next-edge 17 } } T{ b-edge { face 4 } { vertex 5 } { opposite-edge 9 } { next-edge 18 } } T{ b-edge { face 4 } { vertex 7 } { opposite-edge 13 } { next-edge 19 } } T{ b-edge { face 4 } { vertex 3 } { opposite-edge 1 } { next-edge 16 } } T{ b-edge { face 5 } { vertex 4 } { opposite-edge 7 } { next-edge 21 } } T{ b-edge { face 5 } { vertex 0 } { opposite-edge 3 } { next-edge 22 } } T{ b-edge { face 5 } { vertex 2 } { opposite-edge 15 } { next-edge 23 } } T{ b-edge { face 5 } { vertex 6 } { opposite-edge 11 } { next-edge 20 } } T{ b-edge { face 6 } { vertex 8 } { opposite-edge f } { next-edge 25 } } T{ b-edge { face 6 } { vertex 9 } { opposite-edge f } { next-edge 26 } } T{ b-edge { face 6 } { vertex 10 } { opposite-edge f } { next-edge 27 } } T{ b-edge { face 6 } { vertex 11 } { opposite-edge f } { next-edge 24 } } } } { vertices { T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 0 } } T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 1 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 3 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 2 } } T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 4 } } T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 5 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 8 } } T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 9 } } T{ vertex { position double-4{ -1.0 -1.0 0.5 0.0 } } { edge 24 } } T{ vertex { position double-4{ -1.0 -1.0 -0.5 0.0 } } { edge 25 } } T{ vertex { position double-4{ 1.0 1.0 -0.5 0.0 } } { edge 26 } } T{ vertex { position double-4{ 1.0 1.0 0.5 0.0 } } { edge 27 } } } } } CONSTANT: valid-multi-valence-b-rep T{ b-rep { edges { T{ b-edge { face 0 } { vertex 23 } { opposite-edge 12 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 22 } { opposite-edge 8 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 20 } { opposite-edge 4 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 21 } { opposite-edge 16 } { next-edge 0 } } T{ b-edge { face 1 } { vertex 21 } { opposite-edge 2 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 20 } { opposite-edge 11 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 16 } { opposite-edge 20 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 17 } { opposite-edge 17 } { next-edge 4 } } T{ b-edge { face 2 } { vertex 20 } { opposite-edge 1 } { next-edge 9 } } T{ b-edge { face 2 } { vertex 22 } { opposite-edge 15 } { next-edge 10 } } T{ b-edge { face 2 } { vertex 18 } { opposite-edge 24 } { next-edge 11 } } T{ b-edge { face 2 } { vertex 16 } { opposite-edge 5 } { next-edge 8 } } T{ b-edge { face 3 } { vertex 22 } { opposite-edge 0 } { next-edge 13 } } T{ b-edge { face 3 } { vertex 23 } { opposite-edge 19 } { next-edge 14 } } T{ b-edge { face 3 } { vertex 19 } { opposite-edge 28 } { next-edge 15 } } T{ b-edge { face 3 } { vertex 18 } { opposite-edge 9 } { next-edge 12 } } T{ b-edge { face 4 } { vertex 23 } { opposite-edge 3 } { next-edge 17 } } T{ b-edge { face 4 } { vertex 21 } { opposite-edge 7 } { next-edge 18 } } T{ b-edge { face 4 } { vertex 17 } { opposite-edge 32 } { next-edge 19 } } T{ b-edge { face 4 } { vertex 19 } { opposite-edge 13 } { next-edge 16 } } T{ b-edge { face 5 } { vertex 17 } { opposite-edge 6 } { next-edge 21 } } T{ b-edge { face 5 } { vertex 16 } { opposite-edge 27 } { next-edge 22 } } T{ b-edge { face 5 } { vertex 0 } { opposite-edge 36 } { next-edge 23 } } T{ b-edge { face 5 } { vertex 1 } { opposite-edge 33 } { next-edge 20 } } T{ b-edge { face 6 } { vertex 16 } { opposite-edge 10 } { next-edge 25 } } T{ b-edge { face 6 } { vertex 18 } { opposite-edge 31 } { next-edge 26 } } T{ b-edge { face 6 } { vertex 2 } { opposite-edge 44 } { next-edge 27 } } T{ b-edge { face 6 } { vertex 0 } { opposite-edge 21 } { next-edge 24 } } T{ b-edge { face 7 } { vertex 18 } { opposite-edge 14 } { next-edge 29 } } T{ b-edge { face 7 } { vertex 19 } { opposite-edge 35 } { next-edge 30 } } T{ b-edge { face 7 } { vertex 3 } { opposite-edge 52 } { next-edge 31 } } T{ b-edge { face 7 } { vertex 2 } { opposite-edge 25 } { next-edge 28 } } T{ b-edge { face 8 } { vertex 19 } { opposite-edge 18 } { next-edge 33 } } T{ b-edge { face 8 } { vertex 17 } { opposite-edge 23 } { next-edge 34 } } T{ b-edge { face 8 } { vertex 1 } { opposite-edge 60 } { next-edge 35 } } T{ b-edge { face 8 } { vertex 3 } { opposite-edge 29 } { next-edge 32 } } T{ b-edge { face 9 } { vertex 1 } { opposite-edge 22 } { next-edge 37 } } T{ b-edge { face 9 } { vertex 0 } { opposite-edge 43 } { next-edge 38 } } T{ b-edge { face 9 } { vertex 8 } { opposite-edge 68 } { next-edge 39 } } T{ b-edge { face 9 } { vertex 9 } { opposite-edge 65 } { next-edge 36 } } T{ b-edge { face 10 } { vertex 0 } { opposite-edge 47 } { next-edge 41 } } T{ b-edge { face 10 } { vertex 10 } { opposite-edge 73 } { next-edge 42 } } T{ b-edge { face 10 } { vertex 24 } { opposite-edge 72 } { next-edge 43 } } T{ b-edge { face 10 } { vertex 8 } { opposite-edge 37 } { next-edge 40 } } T{ b-edge { face 11 } { vertex 0 } { opposite-edge 26 } { next-edge 45 } } T{ b-edge { face 11 } { vertex 2 } { opposite-edge 51 } { next-edge 46 } } T{ b-edge { face 11 } { vertex 12 } { opposite-edge 76 } { next-edge 47 } } T{ b-edge { face 11 } { vertex 10 } { opposite-edge 40 } { next-edge 44 } } T{ b-edge { face 12 } { vertex 2 } { opposite-edge 55 } { next-edge 49 } } T{ b-edge { face 12 } { vertex 14 } { opposite-edge 81 } { next-edge 50 } } T{ b-edge { face 12 } { vertex 26 } { opposite-edge 80 } { next-edge 51 } } T{ b-edge { face 12 } { vertex 12 } { opposite-edge 45 } { next-edge 48 } } T{ b-edge { face 13 } { vertex 2 } { opposite-edge 30 } { next-edge 53 } } T{ b-edge { face 13 } { vertex 3 } { opposite-edge 59 } { next-edge 54 } } T{ b-edge { face 13 } { vertex 15 } { opposite-edge 84 } { next-edge 55 } } T{ b-edge { face 13 } { vertex 14 } { opposite-edge 48 } { next-edge 52 } } T{ b-edge { face 14 } { vertex 3 } { opposite-edge 63 } { next-edge 57 } } T{ b-edge { face 14 } { vertex 13 } { opposite-edge 89 } { next-edge 58 } } T{ b-edge { face 14 } { vertex 27 } { opposite-edge 88 } { next-edge 59 } } T{ b-edge { face 14 } { vertex 15 } { opposite-edge 53 } { next-edge 56 } } T{ b-edge { face 15 } { vertex 3 } { opposite-edge 34 } { next-edge 61 } } T{ b-edge { face 15 } { vertex 1 } { opposite-edge 64 } { next-edge 62 } } T{ b-edge { face 15 } { vertex 11 } { opposite-edge 92 } { next-edge 63 } } T{ b-edge { face 15 } { vertex 13 } { opposite-edge 56 } { next-edge 60 } } T{ b-edge { face 16 } { vertex 11 } { opposite-edge 61 } { next-edge 65 } } T{ b-edge { face 16 } { vertex 1 } { opposite-edge 39 } { next-edge 66 } } T{ b-edge { face 16 } { vertex 9 } { opposite-edge 97 } { next-edge 67 } } T{ b-edge { face 16 } { vertex 25 } { opposite-edge 96 } { next-edge 64 } } T{ b-edge { face 17 } { vertex 9 } { opposite-edge 38 } { next-edge 69 } } T{ b-edge { face 17 } { vertex 8 } { opposite-edge 75 } { next-edge 70 } } T{ b-edge { face 17 } { vertex 4 } { opposite-edge 102 } { next-edge 71 } } T{ b-edge { face 17 } { vertex 5 } { opposite-edge 98 } { next-edge 68 } } T{ b-edge { face 18 } { vertex 8 } { opposite-edge 42 } { next-edge 73 } } T{ b-edge { face 18 } { vertex 24 } { opposite-edge 41 } { next-edge 74 } } T{ b-edge { face 18 } { vertex 10 } { opposite-edge 79 } { next-edge 75 } } T{ b-edge { face 18 } { vertex 4 } { opposite-edge 69 } { next-edge 72 } } T{ b-edge { face 19 } { vertex 10 } { opposite-edge 46 } { next-edge 77 } } T{ b-edge { face 19 } { vertex 12 } { opposite-edge 83 } { next-edge 78 } } T{ b-edge { face 19 } { vertex 6 } { opposite-edge 103 } { next-edge 79 } } T{ b-edge { face 19 } { vertex 4 } { opposite-edge 74 } { next-edge 76 } } T{ b-edge { face 20 } { vertex 12 } { opposite-edge 50 } { next-edge 81 } } T{ b-edge { face 20 } { vertex 26 } { opposite-edge 49 } { next-edge 82 } } T{ b-edge { face 20 } { vertex 14 } { opposite-edge 87 } { next-edge 83 } } T{ b-edge { face 20 } { vertex 6 } { opposite-edge 77 } { next-edge 80 } } T{ b-edge { face 21 } { vertex 14 } { opposite-edge 54 } { next-edge 85 } } T{ b-edge { face 21 } { vertex 15 } { opposite-edge 91 } { next-edge 86 } } T{ b-edge { face 21 } { vertex 7 } { opposite-edge 100 } { next-edge 87 } } T{ b-edge { face 21 } { vertex 6 } { opposite-edge 82 } { next-edge 84 } } T{ b-edge { face 22 } { vertex 15 } { opposite-edge 58 } { next-edge 89 } } T{ b-edge { face 22 } { vertex 27 } { opposite-edge 57 } { next-edge 90 } } T{ b-edge { face 22 } { vertex 13 } { opposite-edge 95 } { next-edge 91 } } T{ b-edge { face 22 } { vertex 7 } { opposite-edge 85 } { next-edge 88 } } T{ b-edge { face 23 } { vertex 13 } { opposite-edge 62 } { next-edge 93 } } T{ b-edge { face 23 } { vertex 11 } { opposite-edge 99 } { next-edge 94 } } T{ b-edge { face 23 } { vertex 5 } { opposite-edge 101 } { next-edge 95 } } T{ b-edge { face 23 } { vertex 7 } { opposite-edge 90 } { next-edge 92 } } T{ b-edge { face 24 } { vertex 11 } { opposite-edge 67 } { next-edge 97 } } T{ b-edge { face 24 } { vertex 25 } { opposite-edge 66 } { next-edge 98 } } T{ b-edge { face 24 } { vertex 9 } { opposite-edge 71 } { next-edge 99 } } T{ b-edge { face 24 } { vertex 5 } { opposite-edge 93 } { next-edge 96 } } T{ b-edge { face 25 } { vertex 6 } { opposite-edge 86 } { next-edge 101 } } T{ b-edge { face 25 } { vertex 7 } { opposite-edge 94 } { next-edge 102 } } T{ b-edge { face 25 } { vertex 5 } { opposite-edge 70 } { next-edge 103 } } T{ b-edge { face 25 } { vertex 4 } { opposite-edge 78 } { next-edge 100 } } } } { vertices { T{ vertex { position double-4{ 1.0 1.0 1.0 0.0 } } { edge 37 } } T{ vertex { position double-4{ 1.0 1.0 -1.0 0.0 } } { edge 36 } } T{ vertex { position double-4{ 1.0 -1.0 1.0 0.0 } } { edge 52 } } T{ vertex { position double-4{ 1.0 -1.0 -1.0 0.0 } } { edge 53 } } T{ vertex { position double-4{ 3.0 1.0 1.0 0.0 } } { edge 70 } } T{ vertex { position double-4{ 3.0 1.0 -1.0 0.0 } } { edge 71 } } T{ vertex { position double-4{ 3.0 -1.0 1.0 0.0 } } { edge 87 } } T{ vertex { position double-4{ 3.0 -1.0 -1.0 0.0 } } { edge 86 } } T{ vertex { position double-4{ 2.0 2.0 1.0 0.0 } } { edge 38 } } T{ vertex { position double-4{ 2.0 2.0 -1.0 0.0 } } { edge 39 } } T{ vertex { position double-4{ 2.0 1.0 2.0 0.0 } } { edge 47 } } T{ vertex { position double-4{ 2.0 1.0 -2.0 0.0 } } { edge 62 } } T{ vertex { position double-4{ 2.0 -1.0 2.0 0.0 } } { edge 51 } } T{ vertex { position double-4{ 2.0 -1.0 -2.0 0.0 } } { edge 57 } } T{ vertex { position double-4{ 2.0 -2.0 1.0 0.0 } } { edge 55 } } T{ vertex { position double-4{ 2.0 -2.0 -1.0 0.0 } } { edge 54 } } T{ vertex { position double-4{ -1.0 1.0 1.0 0.0 } } { edge 6 } } T{ vertex { position double-4{ -1.0 1.0 -1.0 0.0 } } { edge 7 } } T{ vertex { position double-4{ -1.0 -1.0 1.0 0.0 } } { edge 15 } } T{ vertex { position double-4{ -1.0 -1.0 -1.0 0.0 } } { edge 14 } } T{ vertex { position double-4{ -2.0 1.0 1.0 0.0 } } { edge 2 } } T{ vertex { position double-4{ -2.0 1.0 -1.0 0.0 } } { edge 3 } } T{ vertex { position double-4{ -2.0 -1.0 1.0 0.0 } } { edge 1 } } T{ vertex { position double-4{ -2.0 -1.0 -1.0 0.0 } } { edge 0 } } T{ vertex { position double-4{ 2.0 2.0 2.0 0.0 } } { edge 42 } } T{ vertex { position double-4{ 2.0 2.0 -2.0 0.0 } } { edge 67 } } T{ vertex { position double-4{ 2.0 -2.0 2.0 0.0 } } { edge 50 } } T{ vertex { position double-4{ 2.0 -2.0 -2.0 0.0 } } { edge 58 } } } } { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } T{ face { edge 8 } { next-ring f } { base-face 2 } } T{ face { edge 12 } { next-ring f } { base-face 3 } } T{ face { edge 16 } { next-ring f } { base-face 4 } } T{ face { edge 20 } { next-ring f } { base-face 5 } } T{ face { edge 24 } { next-ring f } { base-face 6 } } T{ face { edge 28 } { next-ring f } { base-face 7 } } T{ face { edge 32 } { next-ring f } { base-face 8 } } T{ face { edge 36 } { next-ring f } { base-face 9 } } T{ face { edge 40 } { next-ring f } { base-face 10 } } T{ face { edge 44 } { next-ring f } { base-face 11 } } T{ face { edge 48 } { next-ring f } { base-face 12 } } T{ face { edge 52 } { next-ring f } { base-face 13 } } T{ face { edge 56 } { next-ring f } { base-face 14 } } T{ face { edge 60 } { next-ring f } { base-face 15 } } T{ face { edge 64 } { next-ring f } { base-face 16 } } T{ face { edge 68 } { next-ring f } { base-face 17 } } T{ face { edge 72 } { next-ring f } { base-face 18 } } T{ face { edge 76 } { next-ring f } { base-face 19 } } T{ face { edge 80 } { next-ring f } { base-face 20 } } T{ face { edge 84 } { next-ring f } { base-face 21 } } T{ face { edge 88 } { next-ring f } { base-face 22 } } T{ face { edge 92 } { next-ring f } { base-face 23 } } T{ face { edge 96 } { next-ring f } { base-face 24 } } T{ face { edge 100 } { next-ring f } { base-face 25 } } } } } CONSTANT: degenerate-incomplete-face T{ b-rep { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 5 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 4 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 3 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 2 } { next-edge 4 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 1 } { next-edge 5 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 0 } { next-edge 0 } } } } { vertices { T{ vertex { position double-4{ -1 -1 0 0 } } { edge 0 } } T{ vertex { position double-4{ 1 -1 0 0 } } { edge 1 } } T{ vertex { position double-4{ 1 1 0 0 } } { edge 2 } } T{ vertex { position double-4{ -1 1 0 0 } } { edge 3 } } } } { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } } } } CONSTANT: partially-degenerate-second-face T{ b-rep { edges { T{ b-edge { face 0 } { vertex 0 } { opposite-edge 6 } { next-edge 1 } } T{ b-edge { face 0 } { vertex 1 } { opposite-edge 5 } { next-edge 2 } } T{ b-edge { face 0 } { vertex 2 } { opposite-edge 4 } { next-edge 3 } } T{ b-edge { face 0 } { vertex 3 } { opposite-edge 9 } { next-edge 0 } } T{ b-edge { face 1 } { vertex 3 } { opposite-edge 2 } { next-edge 5 } } T{ b-edge { face 1 } { vertex 2 } { opposite-edge 1 } { next-edge 6 } } T{ b-edge { face 1 } { vertex 1 } { opposite-edge 0 } { next-edge 7 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge 8 } { next-edge 8 } } T{ b-edge { face 1 } { vertex 4 } { opposite-edge 7 } { next-edge 9 } } T{ b-edge { face 1 } { vertex 0 } { opposite-edge 3 } { next-edge 4 } } } } { vertices { T{ vertex { position double-4{ -1 -1 0 0 } } { edge 0 } } T{ vertex { position double-4{ 1 -1 0 0 } } { edge 1 } } T{ vertex { position double-4{ 1 1 0 0 } } { edge 2 } } T{ vertex { position double-4{ -1 1 0 0 } } { edge 3 } } T{ vertex { position double-4{ -2 -2 0 0 } } { edge 8 } } } } { faces { T{ face { edge 0 } { next-ring f } { base-face 0 } } T{ face { edge 4 } { next-ring f } { base-face 1 } } } } } : nth-when ( index/f seq -- elt/f ) over [ nth ] [ 2drop f ] if ; inline :: connect-b-rep ( b-rep -- ) b-rep faces>> [ [ b-rep edges>> nth-when ] change-edge [ b-rep faces>> nth-when ] change-next-ring [ b-rep faces>> nth-when ] change-base-face drop ] each b-rep vertices>> [ [ b-rep edges>> nth-when ] change-edge drop ] each b-rep edges>> [ [ b-rep faces>> nth-when ] change-face [ b-rep vertices>> nth-when ] change-vertex [ b-rep edges>> nth-when ] change-opposite-edge [ b-rep edges>> nth-when ] change-next-edge drop ] each ; :: disconnect-b-rep ( b-rep -- ) b-rep faces>> >index-hash :> face-indices b-rep edges>> >index-hash :> edge-indices b-rep vertices>> >index-hash :> vertex-indices b-rep faces>> [ [ edge-indices at ] change-edge [ face-indices at ] change-next-ring [ face-indices at ] change-base-face drop ] each b-rep vertices>> [ [ edge-indices at ] change-edge drop ] each b-rep edges>> [ [ face-indices at ] change-face [ vertex-indices at ] change-vertex [ edge-indices at ] change-opposite-edge [ edge-indices at ] change-next-edge drop ] each ; valid-cube-b-rep connect-b-rep missing-face-cube-b-rep connect-b-rep non-quad-face-cube-b-rep connect-b-rep multi-ringed-face-cube-b-rep connect-b-rep valid-multi-valence-b-rep connect-b-rep degenerate-incomplete-face connect-b-rep partially-degenerate-second-face connect-b-rep