# No. 54, Mangle or star-wheel (Brown 1868): "Mangle or star-wheel, for producing an alternating
# rotary motion."
#
# As drawn: the wheel's rim is a ring of radial staves between an inner and an outer ring, open front
# and back, with a gap at A; the pinion B stands under it on an upright (radial) shaft. Model (cm): the
# wheel turns on a horizontal shaft (axis y). 45 staves (capsules, r 0.2) at pitch 1.2566 on the circle
# r 10.0 (where the pinion's 0.7-deep face works), the gap A at the top. The 10-tooth pinion (No. 36's
# teeth, pitch radius 2.0) works on the staves from the front or from the back, its carriage sliding
# along y. Its shaft runs on up to a follower (r 0.45) in a groove at r 6.0-7.0 between the wheel's
# two cheeks: a track in front of a rib and one behind it, joined round the rib's ends, where the
# follower is carried round as the pinion rolls round the end stave; A is solid between the two turns.
# Generator: opencode-runs/batch7/gen054.py.
#
# The pinion is the one motor-driven joint (60 rpm, one way). In front of the staves it drives the
# wheel one way at rp/R = 2.0/10.0 = 0.200 of its speed; at an end stave it rolls round to the
# back and the wheel runs the other way; at the other end it comes round to the front again.
number: 54
slug: mangle-star-wheel
name: Mangle or star-wheel
brown: "Mangle or star-wheel, for producing an alternating rotary motion."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: PGS
  multiccd: true
  duration_s: 12
  floor: false
bodies:
  - id: wheel
    shape: part
    pos: [0, 0, 0]
    density: 7800
    friction: 0.1
    color: "#e8dec6"
    pieces:
      - {kind: band, center: [0, 0], r: [8.4, 9.3], a: [-4.3954, 1.2538], slices: 48, y: [-0.5, 0.5]}     # the inner ring
      - {kind: band, center: [0, 0], r: [10.7, 11.5], a: [-4.3954, 1.2538], slices: 48, y: [-0.5, 0.5]}   # the outer ring
      - {kind: band, center: [0, 0], r: [7.0, 8.4], a: [-4.3354, 1.1938], slices: 48, y: [-0.3, 0.3]}     # web to the rib
      - {kind: disc, center: [0, 0], radius: 7.0, inner: 1.6, y: [2.48, 3.1]}   # front cheek
      - {kind: disc, center: [0, 0], radius: 7.0, inner: 1.6, y: [-3.1, -2.48]}   # back cheek
      - {kind: disc, center: [0, 0], radius: 1.6, inner: 0.6, y: [-4, 4]}     # hub
      - {kind: rod, from: [-3.4236, 0, 8.6469], to: [-3.9389, 0, 9.9486], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-4.4803, 0, 8.1497], to: [-5.1548, 0, 9.3765], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-5.4664, 0, 7.5239], to: [-6.2893, 0, 8.6565], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-6.3663, 0, 6.7794], to: [-7.3247, 0, 7.8], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-7.1658, 0, 5.928], to: [-8.2445, 0, 6.8204], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-7.8522, 0, 4.9832], to: [-9.0343, 0, 5.7333], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-8.4149, 0, 3.9597], to: [-9.6816, 0, 4.5558], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-8.8448, 0, 2.8739], to: [-10.1763, 0, 3.3065], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-9.1353, 0, 1.7426], to: [-10.5105, 0, 2.005], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-9.2816, 0, 0.584], to: [-10.6789, 0, 0.6719], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-9.2816, 0, -0.584], to: [-10.6789, 0, -0.6719], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-9.1353, 0, -1.7426], to: [-10.5105, 0, -2.005], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-8.8448, 0, -2.8739], to: [-10.1763, 0, -3.3065], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-8.4149, 0, -3.9597], to: [-9.6816, 0, -4.5558], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-7.8522, 0, -4.9832], to: [-9.0343, 0, -5.7333], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-7.1658, 0, -5.928], to: [-8.2445, 0, -6.8204], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-6.3663, 0, -6.7794], to: [-7.3247, 0, -7.8], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-5.4664, 0, -7.5239], to: [-6.2893, 0, -8.6565], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-4.4803, 0, -8.1497], to: [-5.1548, 0, -9.3765], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-3.4236, 0, -8.6469], to: [-3.9389, 0, -9.9486], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-2.3128, 0, -9.0078], to: [-2.661, 0, -10.3638], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [-1.1656, 0, -9.2267], to: [-1.3411, 0, -10.6156], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [0.0, 0, -9.3], to: [0.0, 0, -10.7], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [1.1656, 0, -9.2267], to: [1.3411, 0, -10.6156], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [2.3128, 0, -9.0078], to: [2.661, 0, -10.3638], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [3.4236, 0, -8.6469], to: [3.9389, 0, -9.9486], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [4.4803, 0, -8.1497], to: [5.1548, 0, -9.3765], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [5.4664, 0, -7.5239], to: [6.2893, 0, -8.6565], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [6.3663, 0, -6.7794], to: [7.3247, 0, -7.8], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [7.1658, 0, -5.928], to: [8.2445, 0, -6.8204], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [7.8522, 0, -4.9832], to: [9.0343, 0, -5.7333], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [8.4149, 0, -3.9597], to: [9.6816, 0, -4.5558], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [8.8448, 0, -2.8739], to: [10.1763, 0, -3.3065], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [9.1353, 0, -1.7426], to: [10.5105, 0, -2.005], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [9.2816, 0, -0.584], to: [10.6789, 0, -0.6719], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [9.2816, 0, 0.584], to: [10.6789, 0, 0.6719], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [9.1353, 0, 1.7426], to: [10.5105, 0, 2.005], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [8.8448, 0, 2.8739], to: [10.1763, 0, 3.3065], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [8.4149, 0, 3.9597], to: [9.6816, 0, 4.5558], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [7.8522, 0, 4.9832], to: [9.0343, 0, 5.7333], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [7.1658, 0, 5.928], to: [8.2445, 0, 6.8204], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [6.3663, 0, 6.7794], to: [7.3247, 0, 7.8], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [5.4664, 0, 7.5239], to: [6.2893, 0, 8.6565], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [4.4803, 0, 8.1497], to: [5.1548, 0, 9.3765], radius: 0.2, collide: 1, capsule: true}
      - {kind: rod, from: [3.4236, 0, 8.6469], to: [3.9389, 0, 9.9486], radius: 0.2, collide: 1, capsule: true}
      - {kind: band, center: [0, 0], r: [6.0, 7.0], a: [-4.3354, 1.1938], y: [-1.52, 1.52], collide: 1}   # the rib between the tracks
      - {kind: band, center: [0, 0], r: [6.0, 7.0], a: [-4.3354, 1.1938], y: [2.48, 3.1], collide: 1}   # front cheek's wall
      - {kind: band, center: [0, 0], r: [6.0, 7.0], a: [-4.3354, 1.1938], y: [-3.1, -2.48], collide: 1}   # back cheek's wall
      - {kind: loft, a: [[2.2087, 2.48, 5.5787], [2.1426, 2.4777, 5.6044], [2.1426, 3.1, 5.6044], [2.2087, 3.1, 5.5787]], b: [[2.5769, 2.48, 6.5084], [2.4997, 2.4777, 6.5385], [2.4997, 3.1, 6.5385], [2.5769, 3.1, 6.5084]], collide: 1}
      - {kind: loft, a: [[2.2087, -2.48, 5.5787], [2.1426, -2.4777, 5.6044], [2.1426, -3.1, 5.6044], [2.2087, -3.1, 5.5787]], b: [[2.5769, -2.48, 6.5084], [2.4997, -2.4777, 6.5385], [2.4997, -3.1, 6.5385], [2.5769, -3.1, 6.5084]], collide: 1}
      - {kind: loft, a: [[2.2087, -1.52, 5.5787], [2.1426, -1.512, 5.6044], [2.1426, 1.512, 5.6044], [2.2087, 1.52, 5.5787]], b: [[2.5769, -1.52, 6.5084], [2.4997, -1.512, 6.5385], [2.4997, 1.512, 6.5385], [2.5769, 1.52, 6.5084]], collide: 1}
      - {kind: loft, a: [[2.1426, 2.4777, 5.6044], [2.0762, 2.471, 5.6293], [2.0762, 3.1, 5.6293], [2.1426, 3.1, 5.6044]], b: [[2.4997, 2.4777, 6.5385], [2.4222, 2.471, 6.5676], [2.4222, 3.1, 6.5676], [2.4997, 3.1, 6.5385]], collide: 1}
      - {kind: loft, a: [[2.1426, -2.4777, 5.6044], [2.0762, -2.471, 5.6293], [2.0762, -3.1, 5.6293], [2.1426, -3.1, 5.6044]], b: [[2.4997, -2.4777, 6.5385], [2.4222, -2.471, 6.5676], [2.4222, -3.1, 6.5676], [2.4997, -3.1, 6.5385]], collide: 1}
      - {kind: loft, a: [[2.1426, -1.512, 5.6044], [2.0762, -1.488, 5.6293], [2.0762, 1.488, 5.6293], [2.1426, 1.512, 5.6044]], b: [[2.4997, -1.512, 6.5385], [2.4222, -1.488, 6.5676], [2.4222, 1.488, 6.5676], [2.4997, 1.512, 6.5385]], collide: 1}
      - {kind: loft, a: [[2.0762, 2.471, 5.6293], [2.0095, 2.4598, 5.6535], [2.0095, 3.1, 5.6535], [2.0762, 3.1, 5.6293]], b: [[2.4222, 2.471, 6.5676], [2.3444, 2.4598, 6.5957], [2.3444, 3.1, 6.5957], [2.4222, 3.1, 6.5676]], collide: 1}
      - {kind: loft, a: [[2.0762, -2.471, 5.6293], [2.0095, -2.4598, 5.6535], [2.0095, -3.1, 5.6535], [2.0762, -3.1, 5.6293]], b: [[2.4222, -2.471, 6.5676], [2.3444, -2.4598, 6.5957], [2.3444, -3.1, 6.5957], [2.4222, -3.1, 6.5676]], collide: 1}
      - {kind: loft, a: [[2.0762, -1.488, 5.6293], [2.0095, -1.4485, 5.6535], [2.0095, 1.4485, 5.6535], [2.0762, 1.488, 5.6293]], b: [[2.4222, -1.488, 6.5676], [2.3444, -1.4485, 6.5957], [2.3444, 1.4485, 6.5957], [2.4222, 1.488, 6.5676]], collide: 1}
      - {kind: loft, a: [[2.0095, 2.4598, 5.6535], [1.9425, 2.4439, 5.6769], [1.9425, 3.1, 5.6769], [2.0095, 3.1, 5.6535]], b: [[2.3444, 2.4598, 6.5957], [2.2662, 2.4439, 6.623], [2.2662, 3.1, 6.623], [2.3444, 3.1, 6.5957]], collide: 1}
      - {kind: loft, a: [[2.0095, -2.4598, 5.6535], [1.9425, -2.4439, 5.6769], [1.9425, -3.1, 5.6769], [2.0095, -3.1, 5.6535]], b: [[2.3444, -2.4598, 6.5957], [2.2662, -2.4439, 6.623], [2.2662, -3.1, 6.623], [2.3444, -3.1, 6.5957]], collide: 1}
      - {kind: loft, a: [[2.0095, -1.4485, 5.6535], [1.9425, -1.3935, 5.6769], [1.9425, 1.3935, 5.6769], [2.0095, 1.4485, 5.6535]], b: [[2.3444, -1.4485, 6.5957], [2.2662, -1.3935, 6.623], [2.2662, 1.3935, 6.623], [2.3444, 1.4485, 6.5957]], collide: 1}
      - {kind: loft, a: [[1.9425, 2.4439, 5.6769], [1.8752, 2.4235, 5.6994], [1.8752, 3.1, 5.6994], [1.9425, 3.1, 5.6769]], b: [[2.2662, 2.4439, 6.623], [2.1877, 2.4235, 6.6494], [2.1877, 3.1, 6.6494], [2.2662, 3.1, 6.623]], collide: 1}
      - {kind: loft, a: [[1.9425, -2.4439, 5.6769], [1.8752, -2.4235, 5.6994], [1.8752, -3.1, 5.6994], [1.9425, -3.1, 5.6769]], b: [[2.2662, -2.4439, 6.623], [2.1877, -2.4235, 6.6494], [2.1877, -3.1, 6.6494], [2.2662, -3.1, 6.623]], collide: 1}
      - {kind: loft, a: [[1.9425, -1.3935, 5.6769], [1.8752, -1.3218, 5.6994], [1.8752, 1.3218, 5.6994], [1.9425, 1.3935, 5.6769]], b: [[2.2662, -1.3935, 6.623], [2.1877, -1.3218, 6.6494], [2.1877, 1.3218, 6.6494], [2.2662, 1.3935, 6.623]], collide: 1}
      - {kind: loft, a: [[1.8752, 2.4235, 5.6994], [1.8077, 2.3981, 5.7212], [1.8077, 3.1, 5.7212], [1.8752, 3.1, 5.6994]], b: [[2.1877, 2.4235, 6.6494], [2.1089, 2.3981, 6.6748], [2.1089, 3.1, 6.6748], [2.1877, 3.1, 6.6494]], collide: 1}
      - {kind: loft, a: [[1.8752, -2.4235, 5.6994], [1.8077, -2.3981, 5.7212], [1.8077, -3.1, 5.7212], [1.8752, -3.1, 5.6994]], b: [[2.1877, -2.4235, 6.6494], [2.1089, -2.3981, 6.6748], [2.1089, -3.1, 6.6748], [2.1877, -3.1, 6.6494]], collide: 1}
      - {kind: loft, a: [[1.8752, -1.3218, 5.6994], [1.8077, -1.2315, 5.7212], [1.8077, 1.2315, 5.7212], [1.8752, 1.3218, 5.6994]], b: [[2.1877, -1.3218, 6.6494], [2.1089, -1.2315, 6.6748], [2.1089, 1.2315, 6.6748], [2.1877, 1.3218, 6.6494]], collide: 1}
      - {kind: loft, a: [[1.8077, 2.3981, 5.7212], [1.7399, 2.3677, 5.7422], [1.7399, 3.1, 5.7422], [1.8077, 3.1, 5.7212]], b: [[2.1089, 2.3981, 6.6748], [2.0298, 2.3677, 6.6992], [2.0298, 3.1, 6.6992], [2.1089, 3.1, 6.6748]], collide: 1}
      - {kind: loft, a: [[1.8077, -2.3981, 5.7212], [1.7399, -2.3677, 5.7422], [1.7399, -3.1, 5.7422], [1.8077, -3.1, 5.7212]], b: [[2.1089, -2.3981, 6.6748], [2.0298, -2.3677, 6.6992], [2.0298, -3.1, 6.6992], [2.1089, -3.1, 6.6748]], collide: 1}
      - {kind: loft, a: [[1.8077, -1.2315, 5.7212], [1.7399, -1.1187, 5.7422], [1.7399, 1.1187, 5.7422], [1.8077, 1.2315, 5.7212]], b: [[2.1089, -1.2315, 6.6748], [2.0298, -1.1187, 6.6992], [2.0298, 1.1187, 6.6992], [2.1089, 1.2315, 6.6748]], collide: 1}
      - {kind: loft, a: [[1.7399, 2.3677, 5.7422], [1.6718, 2.3321, 5.7624], [1.6718, 3.1, 5.7624], [1.7399, 3.1, 5.7422]], b: [[2.0298, 2.3677, 6.6992], [1.9505, 2.3321, 6.7228], [1.9505, 3.1, 6.7228], [2.0298, 3.1, 6.6992]], collide: 1}
      - {kind: loft, a: [[1.7399, -2.3677, 5.7422], [1.6718, -2.3321, 5.7624], [1.6718, -3.1, 5.7624], [1.7399, -3.1, 5.7422]], b: [[2.0298, -2.3677, 6.6992], [1.9505, -2.3321, 6.7228], [1.9505, -3.1, 6.7228], [2.0298, -3.1, 6.6992]], collide: 1}
      - {kind: loft, a: [[1.7399, -1.1187, 5.7422], [1.6718, -0.9764, 5.7624], [1.6718, 0.9764, 5.7624], [1.7399, 1.1187, 5.7422]], b: [[2.0298, -1.1187, 6.6992], [1.9505, -0.9764, 6.7228], [1.9505, 0.9764, 6.7228], [2.0298, 1.1187, 6.6992]], collide: 1}
      - {kind: loft, a: [[1.6718, 2.3321, 5.7624], [1.6036, 2.2909, 5.7817], [1.6036, 3.1, 5.7817], [1.6718, 3.1, 5.7624]], b: [[1.9505, 2.3321, 6.7228], [1.8708, 2.2909, 6.7454], [1.8708, 3.1, 6.7454], [1.9505, 3.1, 6.7228]], collide: 1}
      - {kind: loft, a: [[1.6718, -2.3321, 5.7624], [1.6036, -2.2909, 5.7817], [1.6036, -3.1, 5.7817], [1.6718, -3.1, 5.7624]], b: [[1.9505, -2.3321, 6.7228], [1.8708, -2.2909, 6.7454], [1.8708, -3.1, 6.7454], [1.9505, -3.1, 6.7228]], collide: 1}
      - {kind: loft, a: [[1.6718, -0.9764, 5.7624], [1.6036, -0.7891, 5.7817], [1.6036, 0.7891, 5.7817], [1.6718, 0.9764, 5.7624]], b: [[1.9505, -0.9764, 6.7228], [1.8708, -0.7891, 6.7454], [1.8708, 0.7891, 6.7454], [1.9505, 0.9764, 6.7228]], collide: 1}
      - {kind: loft, a: [[1.6036, 2.2909, 5.7817], [1.5351, 2.2438, 5.8003], [1.5351, 3.1, 5.8003], [1.6036, 3.1, 5.7817]], b: [[1.8708, 2.2909, 6.7454], [1.7909, 2.2438, 6.767], [1.7909, 3.1, 6.767], [1.8708, 3.1, 6.7454]], collide: 1}
      - {kind: loft, a: [[1.6036, -2.2909, 5.7817], [1.5351, -2.2438, 5.8003], [1.5351, -3.1, 5.8003], [1.6036, -3.1, 5.7817]], b: [[1.8708, -2.2909, 6.7454], [1.7909, -2.2438, 6.767], [1.7909, -3.1, 6.767], [1.8708, -3.1, 6.7454]], collide: 1}
      - {kind: loft, a: [[1.6036, -0.7891, 5.7817], [1.5351, -0.5097, 5.8003], [1.5351, 0.5097, 5.8003], [1.6036, 0.7891, 5.7817]], b: [[1.8708, -0.7891, 6.7454], [1.7909, -0.5097, 6.767], [1.7909, 0.5097, 6.767], [1.8708, 0.7891, 6.7454]], collide: 1}
      - {kind: loft, a: [[1.5351, 2.2438, 5.8003], [1.4664, 2.1905, 5.8181], [1.4664, 3.1, 5.8181], [1.5351, 3.1, 5.8003]], b: [[1.7909, 2.2438, 6.767], [1.7108, 2.1905, 6.7877], [1.7108, 3.1, 6.7877], [1.7909, 3.1, 6.767]], collide: 1}
      - {kind: loft, a: [[1.5351, -2.2438, 5.8003], [1.4664, -2.1905, 5.8181], [1.4664, -3.1, 5.8181], [1.5351, -3.1, 5.8003]], b: [[1.7909, -2.2438, 6.767], [1.7108, -2.1905, 6.7877], [1.7108, -3.1, 6.7877], [1.7909, -3.1, 6.767]], collide: 1}
      - {kind: loft, a: [[1.5351, -0.5097, 5.8003], [1.5007, 0.0, 5.8093], [1.5351, 0.5097, 5.8003]], b: [[1.7909, -0.5097, 6.767], [1.7509, 0.0, 6.7775], [1.7909, 0.5097, 6.767]], collide: 1}
      - {kind: loft, a: [[1.4664, 2.1905, 5.8181], [1.3975, 2.1304, 5.835], [1.3975, 3.1, 5.835], [1.4664, 3.1, 5.8181]], b: [[1.7108, 2.1905, 6.7877], [1.6304, 2.1304, 6.8075], [1.6304, 3.1, 6.8075], [1.7108, 3.1, 6.7877]], collide: 1}
      - {kind: loft, a: [[1.4664, -2.1905, 5.8181], [1.3975, -2.1304, 5.835], [1.3975, -3.1, 5.835], [1.4664, -3.1, 5.8181]], b: [[1.7108, -2.1905, 6.7877], [1.6304, -2.1304, 6.8075], [1.6304, -3.1, 6.8075], [1.7108, -3.1, 6.7877]], collide: 1}
      - {kind: loft, a: [[1.3975, 2.1304, 5.835], [1.3283, 2.0629, 5.8511], [1.3283, 3.1, 5.8511], [1.3975, 3.1, 5.835]], b: [[1.6304, 2.1304, 6.8075], [1.5497, 2.0629, 6.8263], [1.5497, 3.1, 6.8263], [1.6304, 3.1, 6.8075]], collide: 1}
      - {kind: loft, a: [[1.3975, -2.1304, 5.835], [1.3283, -2.0629, 5.8511], [1.3283, -3.1, 5.8511], [1.3975, -3.1, 5.835]], b: [[1.6304, -2.1304, 6.8075], [1.5497, -2.0629, 6.8263], [1.5497, -3.1, 6.8263], [1.6304, -3.1, 6.8075]], collide: 1}
      - {kind: loft, a: [[1.3283, 2.0629, 5.8511], [1.2591, 1.9873, 5.8664], [1.2591, 3.1, 5.8664], [1.3283, 3.1, 5.8511]], b: [[1.5497, 2.0629, 6.8263], [1.4689, 1.9873, 6.8441], [1.4689, 3.1, 6.8441], [1.5497, 3.1, 6.8263]], collide: 1}
      - {kind: loft, a: [[1.3283, -2.0629, 5.8511], [1.2591, -1.9873, 5.8664], [1.2591, -3.1, 5.8664], [1.3283, -3.1, 5.8511]], b: [[1.5497, -2.0629, 6.8263], [1.4689, -1.9873, 6.8441], [1.4689, -3.1, 6.8441], [1.5497, -3.1, 6.8263]], collide: 1}
      - {kind: loft, a: [[1.2591, 1.9873, 5.8664], [1.1896, 1.902, 5.8809], [1.1896, 3.1, 5.8809], [1.2591, 3.1, 5.8664]], b: [[1.4689, 1.9873, 6.8441], [1.3879, 1.902, 6.861], [1.3879, 3.1, 6.861], [1.4689, 3.1, 6.8441]], collide: 1}
      - {kind: loft, a: [[1.2591, -1.9873, 5.8664], [1.1896, -1.902, 5.8809], [1.1896, -3.1, 5.8809], [1.2591, -3.1, 5.8664]], b: [[1.4689, -1.9873, 6.8441], [1.3879, -1.902, 6.861], [1.3879, -3.1, 6.861], [1.4689, -3.1, 6.8441]], collide: 1}
      - {kind: loft, a: [[1.1896, 1.902, 5.8809], [1.12, 1.8065, 5.8945], [1.12, 3.1, 5.8945], [1.1896, 3.1, 5.8809]], b: [[1.3879, 1.902, 6.861], [1.3066, 1.8065, 6.877], [1.3066, 3.1, 6.877], [1.3879, 3.1, 6.861]], collide: 1}
      - {kind: loft, a: [[1.1896, -1.902, 5.8809], [1.12, -1.8065, 5.8945], [1.12, -3.1, 5.8945], [1.1896, -3.1, 5.8809]], b: [[1.3879, -1.902, 6.861], [1.3066, -1.8065, 6.877], [1.3066, -3.1, 6.877], [1.3879, -3.1, 6.861]], collide: 1}
      - {kind: loft, a: [[1.12, 1.8065, 5.8945], [1.0502, 1.6983, 5.9074], [1.0502, 3.1, 5.9074], [1.12, 3.1, 5.8945]], b: [[1.3066, 1.8065, 6.877], [1.2252, 1.6983, 6.8919], [1.2252, 3.1, 6.8919], [1.3066, 3.1, 6.877]], collide: 1}
      - {kind: loft, a: [[1.12, -1.8065, 5.8945], [1.0502, -1.6983, 5.9074], [1.0502, -3.1, 5.9074], [1.12, -3.1, 5.8945]], b: [[1.3066, -1.8065, 6.877], [1.2252, -1.6983, 6.8919], [1.2252, -3.1, 6.8919], [1.3066, -3.1, 6.877]], collide: 1}
      - {kind: loft, a: [[1.0502, 1.6983, 5.9074], [0.9802, 1.5745, 5.9194], [0.9802, 3.1, 5.9194], [1.0502, 3.1, 5.9074]], b: [[1.2252, 1.6983, 6.8919], [1.1436, 1.5745, 6.906], [1.1436, 3.1, 6.906], [1.2252, 3.1, 6.8919]], collide: 1}
      - {kind: loft, a: [[1.0502, -1.6983, 5.9074], [0.9802, -1.5745, 5.9194], [0.9802, -3.1, 5.9194], [1.0502, -3.1, 5.9074]], b: [[1.2252, -1.6983, 6.8919], [1.1436, -1.5745, 6.906], [1.1436, -3.1, 6.906], [1.2252, -3.1, 6.8919]], collide: 1}
      - {kind: loft, a: [[0.9802, 1.5745, 5.9194], [0.9102, 1.4321, 5.9306], [0.9102, 3.1, 5.9306], [0.9802, 3.1, 5.9194]], b: [[1.1436, 1.5745, 6.906], [1.0618, 1.4321, 6.919], [1.0618, 3.1, 6.919], [1.1436, 3.1, 6.906]], collide: 1}
      - {kind: loft, a: [[0.9802, -1.5745, 5.9194], [0.9102, -1.4321, 5.9306], [0.9102, -3.1, 5.9306], [0.9802, -3.1, 5.9194]], b: [[1.1436, -1.5745, 6.906], [1.0618, -1.4321, 6.919], [1.0618, -3.1, 6.919], [1.1436, -3.1, 6.906]], collide: 1}
      - {kind: loft, a: [[0.9102, 1.4321, 5.9306], [0.8399, 1.2638, 5.9409], [0.8399, 3.1, 5.9409], [0.9102, 3.1, 5.9306]], b: [[1.0618, 1.4321, 6.919], [0.9799, 1.2638, 6.9311], [0.9799, 3.1, 6.9311], [1.0618, 3.1, 6.919]], collide: 1}
      - {kind: loft, a: [[0.9102, -1.4321, 5.9306], [0.8399, -1.2638, 5.9409], [0.8399, -3.1, 5.9409], [0.9102, -3.1, 5.9306]], b: [[1.0618, -1.4321, 6.919], [0.9799, -1.2638, 6.9311], [0.9799, -3.1, 6.9311], [1.0618, -3.1, 6.919]], collide: 1}
      - {kind: loft, a: [[0.8399, 1.2638, 5.9409], [0.7696, 1.0577, 5.9504], [0.7696, 3.1, 5.9504], [0.8399, 3.1, 5.9409]], b: [[0.9799, 1.2638, 6.9311], [0.8979, 1.0577, 6.9422], [0.8979, 3.1, 6.9422], [0.9799, 3.1, 6.9311]], collide: 1}
      - {kind: loft, a: [[0.8399, -1.2638, 5.9409], [0.7696, -1.0577, 5.9504], [0.7696, -3.1, 5.9504], [0.8399, -3.1, 5.9409]], b: [[0.9799, -1.2638, 6.9311], [0.8979, -1.0577, 6.9422], [0.8979, -3.1, 6.9422], [0.9799, -3.1, 6.9311]], collide: 1}
      - {kind: loft, a: [[0.7696, 1.0577, 5.9504], [0.6992, 0.7837, 5.9591], [0.6992, 3.1, 5.9591], [0.7696, 3.1, 5.9504]], b: [[0.8979, 1.0577, 6.9422], [0.8157, 0.7837, 6.9523], [0.8157, 3.1, 6.9523], [0.8979, 3.1, 6.9422]], collide: 1}
      - {kind: loft, a: [[0.7696, -1.0577, 5.9504], [0.6992, -0.7837, 5.9591], [0.6992, -3.1, 5.9591], [0.7696, -3.1, 5.9504]], b: [[0.8979, -1.0577, 6.9422], [0.8157, -0.7837, 6.9523], [0.8157, -3.1, 6.9523], [0.8979, -3.1, 6.9422]], collide: 1}
      - {kind: loft, a: [[0.6992, 0.7837, 5.9591], [0.6287, 0.2901, 5.967], [0.6287, 3.1, 5.967], [0.6992, 3.1, 5.9591]], b: [[0.8157, 0.7837, 6.9523], [0.7335, 0.2901, 6.9615], [0.7335, 3.1, 6.9615], [0.8157, 3.1, 6.9523]], collide: 1}
      - {kind: loft, a: [[0.6992, -0.7837, 5.9591], [0.6287, -0.2901, 5.967], [0.6287, -3.1, 5.967], [0.6992, -3.1, 5.9591]], b: [[0.8157, -0.7837, 6.9523], [0.7335, -0.2901, 6.9615], [0.7335, -3.1, 6.9615], [0.8157, -3.1, 6.9523]], collide: 1}
      - {kind: loft, a: [[0.6287, 0.2901, 5.967], [0.5581, 0.0, 5.974], [0.5581, 3.1, 5.974], [0.6287, 3.1, 5.967]], b: [[0.7335, 0.2901, 6.9615], [0.6511, 0.0, 6.9697], [0.6511, 3.1, 6.9697], [0.7335, 3.1, 6.9615]], collide: 1}
      - {kind: loft, a: [[0.6287, -0.2901, 5.967], [0.5581, -0.0, 5.974], [0.5581, -3.1, 5.974], [0.6287, -3.1, 5.967]], b: [[0.7335, -0.2901, 6.9615], [0.6511, -0.0, 6.9697], [0.6511, -3.1, 6.9697], [0.7335, -3.1, 6.9615]], collide: 1}
      - {kind: loft, a: [[-2.2087, 2.48, 5.5787], [-2.1426, 2.4777, 5.6044], [-2.1426, 3.1, 5.6044], [-2.2087, 3.1, 5.5787]], b: [[-2.5769, 2.48, 6.5084], [-2.4997, 2.4777, 6.5385], [-2.4997, 3.1, 6.5385], [-2.5769, 3.1, 6.5084]], collide: 1}
      - {kind: loft, a: [[-2.2087, -2.48, 5.5787], [-2.1426, -2.4777, 5.6044], [-2.1426, -3.1, 5.6044], [-2.2087, -3.1, 5.5787]], b: [[-2.5769, -2.48, 6.5084], [-2.4997, -2.4777, 6.5385], [-2.4997, -3.1, 6.5385], [-2.5769, -3.1, 6.5084]], collide: 1}
      - {kind: loft, a: [[-2.2087, -1.52, 5.5787], [-2.1426, -1.512, 5.6044], [-2.1426, 1.512, 5.6044], [-2.2087, 1.52, 5.5787]], b: [[-2.5769, -1.52, 6.5084], [-2.4997, -1.512, 6.5385], [-2.4997, 1.512, 6.5385], [-2.5769, 1.52, 6.5084]], collide: 1}
      - {kind: loft, a: [[-2.1426, 2.4777, 5.6044], [-2.0762, 2.471, 5.6293], [-2.0762, 3.1, 5.6293], [-2.1426, 3.1, 5.6044]], b: [[-2.4997, 2.4777, 6.5385], [-2.4222, 2.471, 6.5676], [-2.4222, 3.1, 6.5676], [-2.4997, 3.1, 6.5385]], collide: 1}
      - {kind: loft, a: [[-2.1426, -2.4777, 5.6044], [-2.0762, -2.471, 5.6293], [-2.0762, -3.1, 5.6293], [-2.1426, -3.1, 5.6044]], b: [[-2.4997, -2.4777, 6.5385], [-2.4222, -2.471, 6.5676], [-2.4222, -3.1, 6.5676], [-2.4997, -3.1, 6.5385]], collide: 1}
      - {kind: loft, a: [[-2.1426, -1.512, 5.6044], [-2.0762, -1.488, 5.6293], [-2.0762, 1.488, 5.6293], [-2.1426, 1.512, 5.6044]], b: [[-2.4997, -1.512, 6.5385], [-2.4222, -1.488, 6.5676], [-2.4222, 1.488, 6.5676], [-2.4997, 1.512, 6.5385]], collide: 1}
      - {kind: loft, a: [[-2.0762, 2.471, 5.6293], [-2.0095, 2.4598, 5.6535], [-2.0095, 3.1, 5.6535], [-2.0762, 3.1, 5.6293]], b: [[-2.4222, 2.471, 6.5676], [-2.3444, 2.4598, 6.5957], [-2.3444, 3.1, 6.5957], [-2.4222, 3.1, 6.5676]], collide: 1}
      - {kind: loft, a: [[-2.0762, -2.471, 5.6293], [-2.0095, -2.4598, 5.6535], [-2.0095, -3.1, 5.6535], [-2.0762, -3.1, 5.6293]], b: [[-2.4222, -2.471, 6.5676], [-2.3444, -2.4598, 6.5957], [-2.3444, -3.1, 6.5957], [-2.4222, -3.1, 6.5676]], collide: 1}
      - {kind: loft, a: [[-2.0762, -1.488, 5.6293], [-2.0095, -1.4485, 5.6535], [-2.0095, 1.4485, 5.6535], [-2.0762, 1.488, 5.6293]], b: [[-2.4222, -1.488, 6.5676], [-2.3444, -1.4485, 6.5957], [-2.3444, 1.4485, 6.5957], [-2.4222, 1.488, 6.5676]], collide: 1}
      - {kind: loft, a: [[-2.0095, 2.4598, 5.6535], [-1.9425, 2.4439, 5.6769], [-1.9425, 3.1, 5.6769], [-2.0095, 3.1, 5.6535]], b: [[-2.3444, 2.4598, 6.5957], [-2.2662, 2.4439, 6.623], [-2.2662, 3.1, 6.623], [-2.3444, 3.1, 6.5957]], collide: 1}
      - {kind: loft, a: [[-2.0095, -2.4598, 5.6535], [-1.9425, -2.4439, 5.6769], [-1.9425, -3.1, 5.6769], [-2.0095, -3.1, 5.6535]], b: [[-2.3444, -2.4598, 6.5957], [-2.2662, -2.4439, 6.623], [-2.2662, -3.1, 6.623], [-2.3444, -3.1, 6.5957]], collide: 1}
      - {kind: loft, a: [[-2.0095, -1.4485, 5.6535], [-1.9425, -1.3935, 5.6769], [-1.9425, 1.3935, 5.6769], [-2.0095, 1.4485, 5.6535]], b: [[-2.3444, -1.4485, 6.5957], [-2.2662, -1.3935, 6.623], [-2.2662, 1.3935, 6.623], [-2.3444, 1.4485, 6.5957]], collide: 1}
      - {kind: loft, a: [[-1.9425, 2.4439, 5.6769], [-1.8752, 2.4235, 5.6994], [-1.8752, 3.1, 5.6994], [-1.9425, 3.1, 5.6769]], b: [[-2.2662, 2.4439, 6.623], [-2.1877, 2.4235, 6.6494], [-2.1877, 3.1, 6.6494], [-2.2662, 3.1, 6.623]], collide: 1}
      - {kind: loft, a: [[-1.9425, -2.4439, 5.6769], [-1.8752, -2.4235, 5.6994], [-1.8752, -3.1, 5.6994], [-1.9425, -3.1, 5.6769]], b: [[-2.2662, -2.4439, 6.623], [-2.1877, -2.4235, 6.6494], [-2.1877, -3.1, 6.6494], [-2.2662, -3.1, 6.623]], collide: 1}
      - {kind: loft, a: [[-1.9425, -1.3935, 5.6769], [-1.8752, -1.3218, 5.6994], [-1.8752, 1.3218, 5.6994], [-1.9425, 1.3935, 5.6769]], b: [[-2.2662, -1.3935, 6.623], [-2.1877, -1.3218, 6.6494], [-2.1877, 1.3218, 6.6494], [-2.2662, 1.3935, 6.623]], collide: 1}
      - {kind: loft, a: [[-1.8752, 2.4235, 5.6994], [-1.8077, 2.3981, 5.7212], [-1.8077, 3.1, 5.7212], [-1.8752, 3.1, 5.6994]], b: [[-2.1877, 2.4235, 6.6494], [-2.1089, 2.3981, 6.6748], [-2.1089, 3.1, 6.6748], [-2.1877, 3.1, 6.6494]], collide: 1}
      - {kind: loft, a: [[-1.8752, -2.4235, 5.6994], [-1.8077, -2.3981, 5.7212], [-1.8077, -3.1, 5.7212], [-1.8752, -3.1, 5.6994]], b: [[-2.1877, -2.4235, 6.6494], [-2.1089, -2.3981, 6.6748], [-2.1089, -3.1, 6.6748], [-2.1877, -3.1, 6.6494]], collide: 1}
      - {kind: loft, a: [[-1.8752, -1.3218, 5.6994], [-1.8077, -1.2315, 5.7212], [-1.8077, 1.2315, 5.7212], [-1.8752, 1.3218, 5.6994]], b: [[-2.1877, -1.3218, 6.6494], [-2.1089, -1.2315, 6.6748], [-2.1089, 1.2315, 6.6748], [-2.1877, 1.3218, 6.6494]], collide: 1}
      - {kind: loft, a: [[-1.8077, 2.3981, 5.7212], [-1.7399, 2.3677, 5.7422], [-1.7399, 3.1, 5.7422], [-1.8077, 3.1, 5.7212]], b: [[-2.1089, 2.3981, 6.6748], [-2.0298, 2.3677, 6.6992], [-2.0298, 3.1, 6.6992], [-2.1089, 3.1, 6.6748]], collide: 1}
      - {kind: loft, a: [[-1.8077, -2.3981, 5.7212], [-1.7399, -2.3677, 5.7422], [-1.7399, -3.1, 5.7422], [-1.8077, -3.1, 5.7212]], b: [[-2.1089, -2.3981, 6.6748], [-2.0298, -2.3677, 6.6992], [-2.0298, -3.1, 6.6992], [-2.1089, -3.1, 6.6748]], collide: 1}
      - {kind: loft, a: [[-1.8077, -1.2315, 5.7212], [-1.7399, -1.1187, 5.7422], [-1.7399, 1.1187, 5.7422], [-1.8077, 1.2315, 5.7212]], b: [[-2.1089, -1.2315, 6.6748], [-2.0298, -1.1187, 6.6992], [-2.0298, 1.1187, 6.6992], [-2.1089, 1.2315, 6.6748]], collide: 1}
      - {kind: loft, a: [[-1.7399, 2.3677, 5.7422], [-1.6718, 2.3321, 5.7624], [-1.6718, 3.1, 5.7624], [-1.7399, 3.1, 5.7422]], b: [[-2.0298, 2.3677, 6.6992], [-1.9505, 2.3321, 6.7228], [-1.9505, 3.1, 6.7228], [-2.0298, 3.1, 6.6992]], collide: 1}
      - {kind: loft, a: [[-1.7399, -2.3677, 5.7422], [-1.6718, -2.3321, 5.7624], [-1.6718, -3.1, 5.7624], [-1.7399, -3.1, 5.7422]], b: [[-2.0298, -2.3677, 6.6992], [-1.9505, -2.3321, 6.7228], [-1.9505, -3.1, 6.7228], [-2.0298, -3.1, 6.6992]], collide: 1}
      - {kind: loft, a: [[-1.7399, -1.1187, 5.7422], [-1.6718, -0.9764, 5.7624], [-1.6718, 0.9764, 5.7624], [-1.7399, 1.1187, 5.7422]], b: [[-2.0298, -1.1187, 6.6992], [-1.9505, -0.9764, 6.7228], [-1.9505, 0.9764, 6.7228], [-2.0298, 1.1187, 6.6992]], collide: 1}
      - {kind: loft, a: [[-1.6718, 2.3321, 5.7624], [-1.6036, 2.2909, 5.7817], [-1.6036, 3.1, 5.7817], [-1.6718, 3.1, 5.7624]], b: [[-1.9505, 2.3321, 6.7228], [-1.8708, 2.2909, 6.7454], [-1.8708, 3.1, 6.7454], [-1.9505, 3.1, 6.7228]], collide: 1}
      - {kind: loft, a: [[-1.6718, -2.3321, 5.7624], [-1.6036, -2.2909, 5.7817], [-1.6036, -3.1, 5.7817], [-1.6718, -3.1, 5.7624]], b: [[-1.9505, -2.3321, 6.7228], [-1.8708, -2.2909, 6.7454], [-1.8708, -3.1, 6.7454], [-1.9505, -3.1, 6.7228]], collide: 1}
      - {kind: loft, a: [[-1.6718, -0.9764, 5.7624], [-1.6036, -0.7891, 5.7817], [-1.6036, 0.7891, 5.7817], [-1.6718, 0.9764, 5.7624]], b: [[-1.9505, -0.9764, 6.7228], [-1.8708, -0.7891, 6.7454], [-1.8708, 0.7891, 6.7454], [-1.9505, 0.9764, 6.7228]], collide: 1}
      - {kind: loft, a: [[-1.6036, 2.2909, 5.7817], [-1.5351, 2.2438, 5.8003], [-1.5351, 3.1, 5.8003], [-1.6036, 3.1, 5.7817]], b: [[-1.8708, 2.2909, 6.7454], [-1.7909, 2.2438, 6.767], [-1.7909, 3.1, 6.767], [-1.8708, 3.1, 6.7454]], collide: 1}
      - {kind: loft, a: [[-1.6036, -2.2909, 5.7817], [-1.5351, -2.2438, 5.8003], [-1.5351, -3.1, 5.8003], [-1.6036, -3.1, 5.7817]], b: [[-1.8708, -2.2909, 6.7454], [-1.7909, -2.2438, 6.767], [-1.7909, -3.1, 6.767], [-1.8708, -3.1, 6.7454]], collide: 1}
      - {kind: loft, a: [[-1.6036, -0.7891, 5.7817], [-1.5351, -0.5097, 5.8003], [-1.5351, 0.5097, 5.8003], [-1.6036, 0.7891, 5.7817]], b: [[-1.8708, -0.7891, 6.7454], [-1.7909, -0.5097, 6.767], [-1.7909, 0.5097, 6.767], [-1.8708, 0.7891, 6.7454]], collide: 1}
      - {kind: loft, a: [[-1.5351, 2.2438, 5.8003], [-1.4664, 2.1905, 5.8181], [-1.4664, 3.1, 5.8181], [-1.5351, 3.1, 5.8003]], b: [[-1.7909, 2.2438, 6.767], [-1.7108, 2.1905, 6.7877], [-1.7108, 3.1, 6.7877], [-1.7909, 3.1, 6.767]], collide: 1}
      - {kind: loft, a: [[-1.5351, -2.2438, 5.8003], [-1.4664, -2.1905, 5.8181], [-1.4664, -3.1, 5.8181], [-1.5351, -3.1, 5.8003]], b: [[-1.7909, -2.2438, 6.767], [-1.7108, -2.1905, 6.7877], [-1.7108, -3.1, 6.7877], [-1.7909, -3.1, 6.767]], collide: 1}
      - {kind: loft, a: [[-1.5351, -0.5097, 5.8003], [-1.5007, 0.0, 5.8093], [-1.5351, 0.5097, 5.8003]], b: [[-1.7909, -0.5097, 6.767], [-1.7509, 0.0, 6.7775], [-1.7909, 0.5097, 6.767]], collide: 1}
      - {kind: loft, a: [[-1.4664, 2.1905, 5.8181], [-1.3975, 2.1304, 5.835], [-1.3975, 3.1, 5.835], [-1.4664, 3.1, 5.8181]], b: [[-1.7108, 2.1905, 6.7877], [-1.6304, 2.1304, 6.8075], [-1.6304, 3.1, 6.8075], [-1.7108, 3.1, 6.7877]], collide: 1}
      - {kind: loft, a: [[-1.4664, -2.1905, 5.8181], [-1.3975, -2.1304, 5.835], [-1.3975, -3.1, 5.835], [-1.4664, -3.1, 5.8181]], b: [[-1.7108, -2.1905, 6.7877], [-1.6304, -2.1304, 6.8075], [-1.6304, -3.1, 6.8075], [-1.7108, -3.1, 6.7877]], collide: 1}
      - {kind: loft, a: [[-1.3975, 2.1304, 5.835], [-1.3283, 2.0629, 5.8511], [-1.3283, 3.1, 5.8511], [-1.3975, 3.1, 5.835]], b: [[-1.6304, 2.1304, 6.8075], [-1.5497, 2.0629, 6.8263], [-1.5497, 3.1, 6.8263], [-1.6304, 3.1, 6.8075]], collide: 1}
      - {kind: loft, a: [[-1.3975, -2.1304, 5.835], [-1.3283, -2.0629, 5.8511], [-1.3283, -3.1, 5.8511], [-1.3975, -3.1, 5.835]], b: [[-1.6304, -2.1304, 6.8075], [-1.5497, -2.0629, 6.8263], [-1.5497, -3.1, 6.8263], [-1.6304, -3.1, 6.8075]], collide: 1}
      - {kind: loft, a: [[-1.3283, 2.0629, 5.8511], [-1.2591, 1.9873, 5.8664], [-1.2591, 3.1, 5.8664], [-1.3283, 3.1, 5.8511]], b: [[-1.5497, 2.0629, 6.8263], [-1.4689, 1.9873, 6.8441], [-1.4689, 3.1, 6.8441], [-1.5497, 3.1, 6.8263]], collide: 1}
      - {kind: loft, a: [[-1.3283, -2.0629, 5.8511], [-1.2591, -1.9873, 5.8664], [-1.2591, -3.1, 5.8664], [-1.3283, -3.1, 5.8511]], b: [[-1.5497, -2.0629, 6.8263], [-1.4689, -1.9873, 6.8441], [-1.4689, -3.1, 6.8441], [-1.5497, -3.1, 6.8263]], collide: 1}
      - {kind: loft, a: [[-1.2591, 1.9873, 5.8664], [-1.1896, 1.902, 5.8809], [-1.1896, 3.1, 5.8809], [-1.2591, 3.1, 5.8664]], b: [[-1.4689, 1.9873, 6.8441], [-1.3879, 1.902, 6.861], [-1.3879, 3.1, 6.861], [-1.4689, 3.1, 6.8441]], collide: 1}
      - {kind: loft, a: [[-1.2591, -1.9873, 5.8664], [-1.1896, -1.902, 5.8809], [-1.1896, -3.1, 5.8809], [-1.2591, -3.1, 5.8664]], b: [[-1.4689, -1.9873, 6.8441], [-1.3879, -1.902, 6.861], [-1.3879, -3.1, 6.861], [-1.4689, -3.1, 6.8441]], collide: 1}
      - {kind: loft, a: [[-1.1896, 1.902, 5.8809], [-1.12, 1.8065, 5.8945], [-1.12, 3.1, 5.8945], [-1.1896, 3.1, 5.8809]], b: [[-1.3879, 1.902, 6.861], [-1.3066, 1.8065, 6.877], [-1.3066, 3.1, 6.877], [-1.3879, 3.1, 6.861]], collide: 1}
      - {kind: loft, a: [[-1.1896, -1.902, 5.8809], [-1.12, -1.8065, 5.8945], [-1.12, -3.1, 5.8945], [-1.1896, -3.1, 5.8809]], b: [[-1.3879, -1.902, 6.861], [-1.3066, -1.8065, 6.877], [-1.3066, -3.1, 6.877], [-1.3879, -3.1, 6.861]], collide: 1}
      - {kind: loft, a: [[-1.12, 1.8065, 5.8945], [-1.0502, 1.6983, 5.9074], [-1.0502, 3.1, 5.9074], [-1.12, 3.1, 5.8945]], b: [[-1.3066, 1.8065, 6.877], [-1.2252, 1.6983, 6.8919], [-1.2252, 3.1, 6.8919], [-1.3066, 3.1, 6.877]], collide: 1}
      - {kind: loft, a: [[-1.12, -1.8065, 5.8945], [-1.0502, -1.6983, 5.9074], [-1.0502, -3.1, 5.9074], [-1.12, -3.1, 5.8945]], b: [[-1.3066, -1.8065, 6.877], [-1.2252, -1.6983, 6.8919], [-1.2252, -3.1, 6.8919], [-1.3066, -3.1, 6.877]], collide: 1}
      - {kind: loft, a: [[-1.0502, 1.6983, 5.9074], [-0.9802, 1.5745, 5.9194], [-0.9802, 3.1, 5.9194], [-1.0502, 3.1, 5.9074]], b: [[-1.2252, 1.6983, 6.8919], [-1.1436, 1.5745, 6.906], [-1.1436, 3.1, 6.906], [-1.2252, 3.1, 6.8919]], collide: 1}
      - {kind: loft, a: [[-1.0502, -1.6983, 5.9074], [-0.9802, -1.5745, 5.9194], [-0.9802, -3.1, 5.9194], [-1.0502, -3.1, 5.9074]], b: [[-1.2252, -1.6983, 6.8919], [-1.1436, -1.5745, 6.906], [-1.1436, -3.1, 6.906], [-1.2252, -3.1, 6.8919]], collide: 1}
      - {kind: loft, a: [[-0.9802, 1.5745, 5.9194], [-0.9102, 1.4321, 5.9306], [-0.9102, 3.1, 5.9306], [-0.9802, 3.1, 5.9194]], b: [[-1.1436, 1.5745, 6.906], [-1.0618, 1.4321, 6.919], [-1.0618, 3.1, 6.919], [-1.1436, 3.1, 6.906]], collide: 1}
      - {kind: loft, a: [[-0.9802, -1.5745, 5.9194], [-0.9102, -1.4321, 5.9306], [-0.9102, -3.1, 5.9306], [-0.9802, -3.1, 5.9194]], b: [[-1.1436, -1.5745, 6.906], [-1.0618, -1.4321, 6.919], [-1.0618, -3.1, 6.919], [-1.1436, -3.1, 6.906]], collide: 1}
      - {kind: loft, a: [[-0.9102, 1.4321, 5.9306], [-0.8399, 1.2638, 5.9409], [-0.8399, 3.1, 5.9409], [-0.9102, 3.1, 5.9306]], b: [[-1.0618, 1.4321, 6.919], [-0.9799, 1.2638, 6.9311], [-0.9799, 3.1, 6.9311], [-1.0618, 3.1, 6.919]], collide: 1}
      - {kind: loft, a: [[-0.9102, -1.4321, 5.9306], [-0.8399, -1.2638, 5.9409], [-0.8399, -3.1, 5.9409], [-0.9102, -3.1, 5.9306]], b: [[-1.0618, -1.4321, 6.919], [-0.9799, -1.2638, 6.9311], [-0.9799, -3.1, 6.9311], [-1.0618, -3.1, 6.919]], collide: 1}
      - {kind: loft, a: [[-0.8399, 1.2638, 5.9409], [-0.7696, 1.0577, 5.9504], [-0.7696, 3.1, 5.9504], [-0.8399, 3.1, 5.9409]], b: [[-0.9799, 1.2638, 6.9311], [-0.8979, 1.0577, 6.9422], [-0.8979, 3.1, 6.9422], [-0.9799, 3.1, 6.9311]], collide: 1}
      - {kind: loft, a: [[-0.8399, -1.2638, 5.9409], [-0.7696, -1.0577, 5.9504], [-0.7696, -3.1, 5.9504], [-0.8399, -3.1, 5.9409]], b: [[-0.9799, -1.2638, 6.9311], [-0.8979, -1.0577, 6.9422], [-0.8979, -3.1, 6.9422], [-0.9799, -3.1, 6.9311]], collide: 1}
      - {kind: loft, a: [[-0.7696, 1.0577, 5.9504], [-0.6992, 0.7837, 5.9591], [-0.6992, 3.1, 5.9591], [-0.7696, 3.1, 5.9504]], b: [[-0.8979, 1.0577, 6.9422], [-0.8157, 0.7837, 6.9523], [-0.8157, 3.1, 6.9523], [-0.8979, 3.1, 6.9422]], collide: 1}
      - {kind: loft, a: [[-0.7696, -1.0577, 5.9504], [-0.6992, -0.7837, 5.9591], [-0.6992, -3.1, 5.9591], [-0.7696, -3.1, 5.9504]], b: [[-0.8979, -1.0577, 6.9422], [-0.8157, -0.7837, 6.9523], [-0.8157, -3.1, 6.9523], [-0.8979, -3.1, 6.9422]], collide: 1}
      - {kind: loft, a: [[-0.6992, 0.7837, 5.9591], [-0.6287, 0.2901, 5.967], [-0.6287, 3.1, 5.967], [-0.6992, 3.1, 5.9591]], b: [[-0.8157, 0.7837, 6.9523], [-0.7335, 0.2901, 6.9615], [-0.7335, 3.1, 6.9615], [-0.8157, 3.1, 6.9523]], collide: 1}
      - {kind: loft, a: [[-0.6992, -0.7837, 5.9591], [-0.6287, -0.2901, 5.967], [-0.6287, -3.1, 5.967], [-0.6992, -3.1, 5.9591]], b: [[-0.8157, -0.7837, 6.9523], [-0.7335, -0.2901, 6.9615], [-0.7335, -3.1, 6.9615], [-0.8157, -3.1, 6.9523]], collide: 1}
      - {kind: loft, a: [[-0.6287, 0.2901, 5.967], [-0.5581, 0.0, 5.974], [-0.5581, 3.1, 5.974], [-0.6287, 3.1, 5.967]], b: [[-0.7335, 0.2901, 6.9615], [-0.6511, 0.0, 6.9697], [-0.6511, 3.1, 6.9697], [-0.7335, 3.1, 6.9615]], collide: 1}
      - {kind: loft, a: [[-0.6287, -0.2901, 5.967], [-0.5581, -0.0, 5.974], [-0.5581, -3.1, 5.974], [-0.6287, -3.1, 5.967]], b: [[-0.7335, -0.2901, 6.9615], [-0.6511, -0.0, 6.9697], [-0.6511, -3.1, 6.9697], [-0.7335, -3.1, 6.9615]], collide: 1}
      - {kind: band, center: [0, 0], r: [6.0, 7.0], a: [1.4777, 1.6639], y: [-3.1, 3.1], collide: 1}   # A
  - id: carriage
    shape: part
    pos: [0, 2.0, -14]
    density: 2700
    color: "#8f8a80"
    pieces:
      - {kind: poly, points: [[-1.4, -15], [1.4, -15], [1.4, -13.4], [-1.4, -13.4]], y: [0.8, 3.2]}   # the slide-block, bearing B
  - id: pinion
    shape: part
    mount: carriage
    pos: [0, 2.0, -10]
    density: 7800
    friction: 0.1
    color: "#e4d9bf"
    pieces:
      - {kind: rod, from: [0, 2.0, -18.6], to: [0, 2.0, -6.9], radius: 0.3, color: "#8f8a80"}   # B: the pinion's shaft
      - {kind: rod, from: [0, 2.0, -18.4], to: [0, 2.0, -16.9], radius: 4.0, color: "#9c958a"}   # its driving pulley (the inertia a velocity drive wants)
      - {kind: rod, from: [0, 2.0, -6.9], to: [0, 2.0, -6.1], radius: 0.45, collide: 2, capsule: true}   # the follower
      - {kind: disc, center: [0, -10], radius: 1.2, y: [1.7, 2.3]}
      - {kind: loft, a: [[-0.0596, 3.5053, -10.2], [-0.8366, 3.2528, -10.2], [-0.8006, 4.2844, -10.2], [-0.6951, 4.3187, -10.2]], b: [[-0.0596, 3.5053, -9.8], [-0.8366, 3.2528, -9.8], [-0.8006, 4.2844, -9.8], [-0.6951, 4.3187, -9.8]], collide: 2}
      - {kind: loft, a: [[-0.933, 3.1828, -10.2], [-1.4132, 2.5218, -10.2], [-1.9904, 3.3776, -10.2], [-1.9252, 3.4673, -10.2]], b: [[-0.933, 3.1828, -9.8], [-1.4132, 2.5218, -9.8], [-1.9904, 3.3776, -9.8], [-1.9252, 3.4673, -9.8]], collide: 2}
      - {kind: loft, a: [[-1.45, 2.4085, -10.2], [-1.45, 1.5915, -10.2], [-2.42, 1.9445, -10.2], [-2.42, 2.0555, -10.2]], b: [[-1.45, 2.4085, -9.8], [-1.45, 1.5915, -9.8], [-2.42, 1.9445, -9.8], [-2.42, 2.0555, -9.8]], collide: 2}
      - {kind: loft, a: [[-1.4132, 1.4782, -10.2], [-0.933, 0.8172, -10.2], [-1.9252, 0.5327, -10.2], [-1.9904, 0.6224, -10.2]], b: [[-1.4132, 1.4782, -9.8], [-0.933, 0.8172, -9.8], [-1.9252, 0.5327, -9.8], [-1.9904, 0.6224, -9.8]], collide: 2}
      - {kind: loft, a: [[-0.8366, 0.7472, -10.2], [-0.0596, 0.4947, -10.2], [-0.6951, -0.3187, -10.2], [-0.8006, -0.2844, -10.2]], b: [[-0.8366, 0.7472, -9.8], [-0.0596, 0.4947, -9.8], [-0.6951, -0.3187, -9.8], [-0.8006, -0.2844, -9.8]], collide: 2}
      - {kind: loft, a: [[0.0596, 0.4947, -10.2], [0.8366, 0.7472, -10.2], [0.8006, -0.2844, -10.2], [0.6951, -0.3187, -10.2]], b: [[0.0596, 0.4947, -9.8], [0.8366, 0.7472, -9.8], [0.8006, -0.2844, -9.8], [0.6951, -0.3187, -9.8]], collide: 2}
      - {kind: loft, a: [[0.933, 0.8172, -10.2], [1.4132, 1.4782, -10.2], [1.9904, 0.6224, -10.2], [1.9252, 0.5327, -10.2]], b: [[0.933, 0.8172, -9.8], [1.4132, 1.4782, -9.8], [1.9904, 0.6224, -9.8], [1.9252, 0.5327, -9.8]], collide: 2}
      - {kind: loft, a: [[1.45, 1.5915, -10.2], [1.45, 2.4085, -10.2], [2.42, 2.0555, -10.2], [2.42, 1.9445, -10.2]], b: [[1.45, 1.5915, -9.8], [1.45, 2.4085, -9.8], [2.42, 2.0555, -9.8], [2.42, 1.9445, -9.8]], collide: 2}
      - {kind: loft, a: [[1.4132, 2.5218, -10.2], [0.933, 3.1828, -10.2], [1.9252, 3.4673, -10.2], [1.9904, 3.3776, -10.2]], b: [[1.4132, 2.5218, -9.8], [0.933, 3.1828, -9.8], [1.9252, 3.4673, -9.8], [1.9904, 3.3776, -9.8]], collide: 2}
      - {kind: loft, a: [[0.8366, 3.2528, -10.2], [0.0596, 3.5053, -10.2], [0.6951, 4.3187, -10.2], [0.8006, 4.2844, -10.2]], b: [[0.8366, 3.2528, -9.8], [0.0596, 3.5053, -9.8], [0.6951, 4.3187, -9.8], [0.8006, 4.2844, -9.8]], collide: 2}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: poly, points: [[-1.5, -19], [1.5, -19], [1.0, 0], [-1.0, 0]], y: [-6, -5]}
      - {kind: disc, center: [0, 0], radius: 1.3, y: [-6, -5]}
      - {kind: poly, points: [[-1.5, -19], [1.5, -19], [1.0, 0], [-1.0, 0]], y: [5, 6]}
      - {kind: disc, center: [0, 0], radius: 1.3, y: [5, 6]}
      - {kind: rod, from: [0, -6.5, 0], to: [0, 6.5, 0], radius: 0.6, color: "#8f8a80"}
      - {kind: poly, points: [[-2.4, -15.6], [-1.5, -15.6], [-1.5, -12.8], [-2.4, -12.8]], y: [-4.5, 4.5]}   # the slide's guides
      - {kind: poly, points: [[1.5, -15.6], [2.4, -15.6], [2.4, -12.8], [1.5, -12.8]], y: [-4.5, 4.5]}
      - {kind: poly, points: [[-5.5, -16.4], [5.5, -16.4], [5.5, -15.6], [-5.5, -15.6]], y: [-4.5, 4.5]}   # the slide's bed
      - {kind: poly, points: [[-5.5, -19], [-4.6, -19], [-4.6, -16.4], [-5.5, -16.4]], y: [-4.5, 4.5]}
      - {kind: poly, points: [[4.6, -19], [5.5, -19], [5.5, -16.4], [4.6, -16.4]], y: [-4.5, 4.5]}
      - {kind: poly, points: [[-7, -20], [7, -20], [7, -19], [-7, -19]], y: [-8, 8], color: "#b9b09c"}
joints:
  - {id: j_wheel, type: hinge, body: wheel, axis: [0, 1, 0], damping: 0.3}
  - {id: j_slide, type: slide, body: carriage, axis: [0, 1, 0], damping: 0.5, range: [-4.6, 0.6]}
  - {id: j_pinion, type: hinge, body: pinion, axis: [0, 0, 1], damping: 0.001}
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_pinion, kind: velocity, rpm: 60, kv: 2, max_torque: 20}
checks:
  - {type: ratio, out: j_wheel, in: j_pinion, expect: -0.2, tol: 0.01, settle_s: 0.4, window_s: 1.6}
  - {type: ratio, out: j_wheel, in: j_pinion, expect: 0.2, tol: 0.01, settle_s: 3.2, window_s: 3.6}
  - {type: ratio, out: j_wheel, in: j_pinion, expect: -0.2, tol: 0.01, settle_s: 8.2, window_s: 3.4}
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [0, 0, -6], position: [75, 40, -28], fov: 34}
display:
  tiers:
    - {id: full, label: Full, ms: 0.1126}
    - {id: light, label: Light, timestep: 0.0008, ms: 0.0609}
  output: j_wheel
  labels: {j_pinion: "Pinion B (driver, one way)", j_wheel: "Star-wheel (to and fro)", j_slide: "Pinion's carriage"}
  proof: {label: "Staves out of contact", sub: "the pinion turns alone: the wheel stands still"}
