# No. 106 (Brown 1868): "Uniform reciprocating rectilinear motion, produced by rotary motion of grooved cams." (Nos. 106 and 107.)
#
# Model (cm): a drum 9.2 cm across turns on its axle (the one driven joint, 10 turns a minute). An endless groove 1.14 cm wide runs round
# it, wandering 5 cm along the drum, 1 stroke each way in a turn at a steady 1.592 cm to the radian of the drum's angle (the turns rounded over
# 0.30 rad); its two walls are 72 convex pieces each. A rod hung from the beam slides parallel to the axle and carries a pin (1.0 cm) that
# works in the groove by real contact, so the groove drives it both ways and no spring is wanted. Generator: opencode-runs/batch9/gen106.py.
number: 106
slug: grooved-drum-one-stroke
name: A grooved drum drawing a rod to and fro
brown: "Uniform reciprocating rectilinear motion, produced by rotary motion of grooved cams."
units: cm
sim:
  timestep: 0.0005
  integrator: implicitfast
  iterations: 50
  solver: PGS
  duration_s: 12
  floor: false
bodies:
  - id: drum
    shape: part
    pos: [0, 0, 0]
    mass: 2.0
    friction: 0.05
    color: "#d9cfb6"
    pieces:
      - {kind: rod, from: [-4.5724, 0, 0], to: [9.5724, 0, 0], radius: 0.8, collide: 0, color: "#8f8a80"}   # the axle
      - {kind: rod, from: [-1.5724, 0, 0], to: [6.5724, 0, 0], radius: 3.4, collide: 0, color: "#a39b88"}   # the drum's core, the groove's bottom
      - {kind: loft, a: [[0.8329, 3.4, 0.0], [6.5724, 3.4, 0.0], [6.5724, 4.6, 0.0], [0.8329, 4.6, 0.0]], b: [[0.8534, 3.3871, 0.2963], [6.5724, 3.3871, 0.2963], [6.5724, 4.5825, 0.4009], [0.8534, 4.5825, 0.4009]], collide: 1}
      - {kind: loft, a: [[0.8534, 3.3871, 0.2963], [6.5724, 3.3871, 0.2963], [6.5724, 4.5825, 0.4009], [0.8534, 4.5825, 0.4009]], b: [[0.907, 3.3483, 0.5904], [6.5724, 3.3483, 0.5904], [6.5724, 4.5301, 0.7988], [0.907, 4.5301, 0.7988]], collide: 1}
      - {kind: loft, a: [[0.907, 3.3483, 0.5904], [6.5724, 3.3483, 0.5904], [6.5724, 4.5301, 0.7988], [0.907, 4.5301, 0.7988]], b: [[1.0002, 3.2841, 0.88], [6.5724, 3.2841, 0.88], [6.5724, 4.4433, 1.1906], [1.0002, 4.4433, 1.1906]], collide: 1}
      - {kind: loft, a: [[1.0002, 3.2841, 0.88], [6.5724, 3.2841, 0.88], [6.5724, 4.4433, 1.1906], [1.0002, 4.4433, 1.1906]], b: [[1.128, 3.195, 1.1629], [6.5724, 3.195, 1.1629], [6.5724, 4.3226, 1.5733], [1.128, 4.3226, 1.5733]], collide: 1}
      - {kind: loft, a: [[1.128, 3.195, 1.1629], [6.5724, 3.195, 1.1629], [6.5724, 4.3226, 1.5733], [1.128, 4.3226, 1.5733]], b: [[1.2669, 3.0814, 1.4369], [6.5724, 3.0814, 1.4369], [6.5724, 4.169, 1.944], [1.2669, 4.169, 1.944]], collide: 1}
      - {kind: loft, a: [[1.2669, 3.0814, 1.4369], [6.5724, 3.0814, 1.4369], [6.5724, 4.169, 1.944], [1.2669, 4.169, 1.944]], b: [[1.4058, 2.9445, 1.7], [6.5724, 2.9445, 1.7], [6.5724, 3.9837, 2.3], [1.4058, 3.9837, 2.3]], collide: 1}
      - {kind: loft, a: [[1.4058, 2.9445, 1.7], [6.5724, 2.9445, 1.7], [6.5724, 3.9837, 2.3], [1.4058, 3.9837, 2.3]], b: [[1.5447, 2.7851, 1.9502], [6.5724, 2.7851, 1.9502], [6.5724, 3.7681, 2.6385], [1.5447, 3.7681, 2.6385]], collide: 1}
      - {kind: loft, a: [[1.5447, 2.7851, 1.9502], [6.5724, 2.7851, 1.9502], [6.5724, 3.7681, 2.6385], [1.5447, 3.7681, 2.6385]], b: [[1.6835, 2.6046, 2.1855], [6.5724, 2.6046, 2.1855], [6.5724, 3.5238, 2.9568], [1.6835, 3.5238, 2.9568]], collide: 1}
      - {kind: loft, a: [[1.6835, 2.6046, 2.1855], [6.5724, 2.6046, 2.1855], [6.5724, 3.5238, 2.9568], [1.6835, 3.5238, 2.9568]], b: [[1.8224, 2.4042, 2.4042], [6.5724, 2.4042, 2.4042], [6.5724, 3.2527, 3.2527], [1.8224, 3.2527, 3.2527]], collide: 1}
      - {kind: loft, a: [[1.8224, 2.4042, 2.4042], [6.5724, 2.4042, 2.4042], [6.5724, 3.2527, 3.2527], [1.8224, 3.2527, 3.2527]], b: [[1.9613, 2.1855, 2.6046], [6.5724, 2.1855, 2.6046], [6.5724, 2.9568, 3.5238], [1.9613, 2.9568, 3.5238]], collide: 1}
      - {kind: loft, a: [[1.9613, 2.1855, 2.6046], [6.5724, 2.1855, 2.6046], [6.5724, 2.9568, 3.5238], [1.9613, 2.9568, 3.5238]], b: [[2.1002, 1.9502, 2.7851], [6.5724, 1.9502, 2.7851], [6.5724, 2.6385, 3.7681], [2.1002, 2.6385, 3.7681]], collide: 1}
      - {kind: loft, a: [[2.1002, 1.9502, 2.7851], [6.5724, 1.9502, 2.7851], [6.5724, 2.6385, 3.7681], [2.1002, 2.6385, 3.7681]], b: [[2.2391, 1.7, 2.9445], [6.5724, 1.7, 2.9445], [6.5724, 2.3, 3.9837], [2.2391, 2.3, 3.9837]], collide: 1}
      - {kind: loft, a: [[2.2391, 1.7, 2.9445], [6.5724, 1.7, 2.9445], [6.5724, 2.3, 3.9837], [2.2391, 2.3, 3.9837]], b: [[2.378, 1.4369, 3.0814], [6.5724, 1.4369, 3.0814], [6.5724, 1.944, 4.169], [2.378, 1.944, 4.169]], collide: 1}
      - {kind: loft, a: [[2.378, 1.4369, 3.0814], [6.5724, 1.4369, 3.0814], [6.5724, 1.944, 4.169], [2.378, 1.944, 4.169]], b: [[2.5169, 1.1629, 3.195], [6.5724, 1.1629, 3.195], [6.5724, 1.5733, 4.3226], [2.5169, 1.5733, 4.3226]], collide: 1}
      - {kind: loft, a: [[2.5169, 1.1629, 3.195], [6.5724, 1.1629, 3.195], [6.5724, 1.5733, 4.3226], [2.5169, 1.5733, 4.3226]], b: [[2.6558, 0.88, 3.2841], [6.5724, 0.88, 3.2841], [6.5724, 1.1906, 4.4433], [2.6558, 1.1906, 4.4433]], collide: 1}
      - {kind: loft, a: [[2.6558, 0.88, 3.2841], [6.5724, 0.88, 3.2841], [6.5724, 1.1906, 4.4433], [2.6558, 1.1906, 4.4433]], b: [[2.7947, 0.5904, 3.3483], [6.5724, 0.5904, 3.3483], [6.5724, 0.7988, 4.5301], [2.7947, 0.7988, 4.5301]], collide: 1}
      - {kind: loft, a: [[2.7947, 0.5904, 3.3483], [6.5724, 0.5904, 3.3483], [6.5724, 0.7988, 4.5301], [2.7947, 0.7988, 4.5301]], b: [[2.9335, 0.2963, 3.3871], [6.5724, 0.2963, 3.3871], [6.5724, 0.4009, 4.5825], [2.9335, 0.4009, 4.5825]], collide: 1}
      - {kind: loft, a: [[2.9335, 0.2963, 3.3871], [6.5724, 0.2963, 3.3871], [6.5724, 0.4009, 4.5825], [2.9335, 0.4009, 4.5825]], b: [[3.0724, 0.0, 3.4], [6.5724, 0.0, 3.4], [6.5724, 0.0, 4.6], [3.0724, 0.0, 4.6]], collide: 1}
      - {kind: loft, a: [[3.0724, 0.0, 3.4], [6.5724, 0.0, 3.4], [6.5724, 0.0, 4.6], [3.0724, 0.0, 4.6]], b: [[3.2113, -0.2963, 3.3871], [6.5724, -0.2963, 3.3871], [6.5724, -0.4009, 4.5825], [3.2113, -0.4009, 4.5825]], collide: 1}
      - {kind: loft, a: [[3.2113, -0.2963, 3.3871], [6.5724, -0.2963, 3.3871], [6.5724, -0.4009, 4.5825], [3.2113, -0.4009, 4.5825]], b: [[3.3502, -0.5904, 3.3483], [6.5724, -0.5904, 3.3483], [6.5724, -0.7988, 4.5301], [3.3502, -0.7988, 4.5301]], collide: 1}
      - {kind: loft, a: [[3.3502, -0.5904, 3.3483], [6.5724, -0.5904, 3.3483], [6.5724, -0.7988, 4.5301], [3.3502, -0.7988, 4.5301]], b: [[3.4891, -0.88, 3.2841], [6.5724, -0.88, 3.2841], [6.5724, -1.1906, 4.4433], [3.4891, -1.1906, 4.4433]], collide: 1}
      - {kind: loft, a: [[3.4891, -0.88, 3.2841], [6.5724, -0.88, 3.2841], [6.5724, -1.1906, 4.4433], [3.4891, -1.1906, 4.4433]], b: [[3.628, -1.1629, 3.195], [6.5724, -1.1629, 3.195], [6.5724, -1.5733, 4.3226], [3.628, -1.5733, 4.3226]], collide: 1}
      - {kind: loft, a: [[3.628, -1.1629, 3.195], [6.5724, -1.1629, 3.195], [6.5724, -1.5733, 4.3226], [3.628, -1.5733, 4.3226]], b: [[3.7669, -1.4369, 3.0814], [6.5724, -1.4369, 3.0814], [6.5724, -1.944, 4.169], [3.7669, -1.944, 4.169]], collide: 1}
      - {kind: loft, a: [[3.7669, -1.4369, 3.0814], [6.5724, -1.4369, 3.0814], [6.5724, -1.944, 4.169], [3.7669, -1.944, 4.169]], b: [[3.9058, -1.7, 2.9445], [6.5724, -1.7, 2.9445], [6.5724, -2.3, 3.9837], [3.9058, -2.3, 3.9837]], collide: 1}
      - {kind: loft, a: [[3.9058, -1.7, 2.9445], [6.5724, -1.7, 2.9445], [6.5724, -2.3, 3.9837], [3.9058, -2.3, 3.9837]], b: [[4.0447, -1.9502, 2.7851], [6.5724, -1.9502, 2.7851], [6.5724, -2.6385, 3.7681], [4.0447, -2.6385, 3.7681]], collide: 1}
      - {kind: loft, a: [[4.0447, -1.9502, 2.7851], [6.5724, -1.9502, 2.7851], [6.5724, -2.6385, 3.7681], [4.0447, -2.6385, 3.7681]], b: [[4.1835, -2.1855, 2.6046], [6.5724, -2.1855, 2.6046], [6.5724, -2.9568, 3.5238], [4.1835, -2.9568, 3.5238]], collide: 1}
      - {kind: loft, a: [[4.1835, -2.1855, 2.6046], [6.5724, -2.1855, 2.6046], [6.5724, -2.9568, 3.5238], [4.1835, -2.9568, 3.5238]], b: [[4.3224, -2.4042, 2.4042], [6.5724, -2.4042, 2.4042], [6.5724, -3.2527, 3.2527], [4.3224, -3.2527, 3.2527]], collide: 1}
      - {kind: loft, a: [[4.3224, -2.4042, 2.4042], [6.5724, -2.4042, 2.4042], [6.5724, -3.2527, 3.2527], [4.3224, -3.2527, 3.2527]], b: [[4.4613, -2.6046, 2.1855], [6.5724, -2.6046, 2.1855], [6.5724, -3.5238, 2.9568], [4.4613, -3.5238, 2.9568]], collide: 1}
      - {kind: loft, a: [[4.4613, -2.6046, 2.1855], [6.5724, -2.6046, 2.1855], [6.5724, -3.5238, 2.9568], [4.4613, -3.5238, 2.9568]], b: [[4.6002, -2.7851, 1.9502], [6.5724, -2.7851, 1.9502], [6.5724, -3.7681, 2.6385], [4.6002, -3.7681, 2.6385]], collide: 1}
      - {kind: loft, a: [[4.6002, -2.7851, 1.9502], [6.5724, -2.7851, 1.9502], [6.5724, -3.7681, 2.6385], [4.6002, -3.7681, 2.6385]], b: [[4.7391, -2.9445, 1.7], [6.5724, -2.9445, 1.7], [6.5724, -3.9837, 2.3], [4.7391, -3.9837, 2.3]], collide: 1}
      - {kind: loft, a: [[4.7391, -2.9445, 1.7], [6.5724, -2.9445, 1.7], [6.5724, -3.9837, 2.3], [4.7391, -3.9837, 2.3]], b: [[4.878, -3.0814, 1.4369], [6.5724, -3.0814, 1.4369], [6.5724, -4.169, 1.944], [4.878, -4.169, 1.944]], collide: 1}
      - {kind: loft, a: [[4.878, -3.0814, 1.4369], [6.5724, -3.0814, 1.4369], [6.5724, -4.169, 1.944], [4.878, -4.169, 1.944]], b: [[5.0169, -3.195, 1.1629], [6.5724, -3.195, 1.1629], [6.5724, -4.3226, 1.5733], [5.0169, -4.3226, 1.5733]], collide: 1}
      - {kind: loft, a: [[5.0169, -3.195, 1.1629], [6.5724, -3.195, 1.1629], [6.5724, -4.3226, 1.5733], [5.0169, -4.3226, 1.5733]], b: [[5.1447, -3.2841, 0.88], [6.5724, -3.2841, 0.88], [6.5724, -4.4433, 1.1906], [5.1447, -4.4433, 1.1906]], collide: 1}
      - {kind: loft, a: [[5.1447, -3.2841, 0.88], [6.5724, -3.2841, 0.88], [6.5724, -4.4433, 1.1906], [5.1447, -4.4433, 1.1906]], b: [[5.2378, -3.3483, 0.5904], [6.5724, -3.3483, 0.5904], [6.5724, -4.5301, 0.7988], [5.2378, -4.5301, 0.7988]], collide: 1}
      - {kind: loft, a: [[5.2378, -3.3483, 0.5904], [6.5724, -3.3483, 0.5904], [6.5724, -4.5301, 0.7988], [5.2378, -4.5301, 0.7988]], b: [[5.2915, -3.3871, 0.2963], [6.5724, -3.3871, 0.2963], [6.5724, -4.5825, 0.4009], [5.2915, -4.5825, 0.4009]], collide: 1}
      - {kind: loft, a: [[5.2915, -3.3871, 0.2963], [6.5724, -3.3871, 0.2963], [6.5724, -4.5825, 0.4009], [5.2915, -4.5825, 0.4009]], b: [[5.312, -3.4, 0.0], [6.5724, -3.4, 0.0], [6.5724, -4.6, 0.0], [5.312, -4.6, 0.0]], collide: 1}
      - {kind: loft, a: [[5.312, -3.4, 0.0], [6.5724, -3.4, 0.0], [6.5724, -4.6, 0.0], [5.312, -4.6, 0.0]], b: [[5.2915, -3.3871, -0.2963], [6.5724, -3.3871, -0.2963], [6.5724, -4.5825, -0.4009], [5.2915, -4.5825, -0.4009]], collide: 1}
      - {kind: loft, a: [[5.2915, -3.3871, -0.2963], [6.5724, -3.3871, -0.2963], [6.5724, -4.5825, -0.4009], [5.2915, -4.5825, -0.4009]], b: [[5.2378, -3.3483, -0.5904], [6.5724, -3.3483, -0.5904], [6.5724, -4.5301, -0.7988], [5.2378, -4.5301, -0.7988]], collide: 1}
      - {kind: loft, a: [[5.2378, -3.3483, -0.5904], [6.5724, -3.3483, -0.5904], [6.5724, -4.5301, -0.7988], [5.2378, -4.5301, -0.7988]], b: [[5.1447, -3.2841, -0.88], [6.5724, -3.2841, -0.88], [6.5724, -4.4433, -1.1906], [5.1447, -4.4433, -1.1906]], collide: 1}
      - {kind: loft, a: [[5.1447, -3.2841, -0.88], [6.5724, -3.2841, -0.88], [6.5724, -4.4433, -1.1906], [5.1447, -4.4433, -1.1906]], b: [[5.0169, -3.195, -1.1629], [6.5724, -3.195, -1.1629], [6.5724, -4.3226, -1.5733], [5.0169, -4.3226, -1.5733]], collide: 1}
      - {kind: loft, a: [[5.0169, -3.195, -1.1629], [6.5724, -3.195, -1.1629], [6.5724, -4.3226, -1.5733], [5.0169, -4.3226, -1.5733]], b: [[4.878, -3.0814, -1.4369], [6.5724, -3.0814, -1.4369], [6.5724, -4.169, -1.944], [4.878, -4.169, -1.944]], collide: 1}
      - {kind: loft, a: [[4.878, -3.0814, -1.4369], [6.5724, -3.0814, -1.4369], [6.5724, -4.169, -1.944], [4.878, -4.169, -1.944]], b: [[4.7391, -2.9445, -1.7], [6.5724, -2.9445, -1.7], [6.5724, -3.9837, -2.3], [4.7391, -3.9837, -2.3]], collide: 1}
      - {kind: loft, a: [[4.7391, -2.9445, -1.7], [6.5724, -2.9445, -1.7], [6.5724, -3.9837, -2.3], [4.7391, -3.9837, -2.3]], b: [[4.6002, -2.7851, -1.9502], [6.5724, -2.7851, -1.9502], [6.5724, -3.7681, -2.6385], [4.6002, -3.7681, -2.6385]], collide: 1}
      - {kind: loft, a: [[4.6002, -2.7851, -1.9502], [6.5724, -2.7851, -1.9502], [6.5724, -3.7681, -2.6385], [4.6002, -3.7681, -2.6385]], b: [[4.4613, -2.6046, -2.1855], [6.5724, -2.6046, -2.1855], [6.5724, -3.5238, -2.9568], [4.4613, -3.5238, -2.9568]], collide: 1}
      - {kind: loft, a: [[4.4613, -2.6046, -2.1855], [6.5724, -2.6046, -2.1855], [6.5724, -3.5238, -2.9568], [4.4613, -3.5238, -2.9568]], b: [[4.3224, -2.4042, -2.4042], [6.5724, -2.4042, -2.4042], [6.5724, -3.2527, -3.2527], [4.3224, -3.2527, -3.2527]], collide: 1}
      - {kind: loft, a: [[4.3224, -2.4042, -2.4042], [6.5724, -2.4042, -2.4042], [6.5724, -3.2527, -3.2527], [4.3224, -3.2527, -3.2527]], b: [[4.1835, -2.1855, -2.6046], [6.5724, -2.1855, -2.6046], [6.5724, -2.9568, -3.5238], [4.1835, -2.9568, -3.5238]], collide: 1}
      - {kind: loft, a: [[4.1835, -2.1855, -2.6046], [6.5724, -2.1855, -2.6046], [6.5724, -2.9568, -3.5238], [4.1835, -2.9568, -3.5238]], b: [[4.0447, -1.9502, -2.7851], [6.5724, -1.9502, -2.7851], [6.5724, -2.6385, -3.7681], [4.0447, -2.6385, -3.7681]], collide: 1}
      - {kind: loft, a: [[4.0447, -1.9502, -2.7851], [6.5724, -1.9502, -2.7851], [6.5724, -2.6385, -3.7681], [4.0447, -2.6385, -3.7681]], b: [[3.9058, -1.7, -2.9445], [6.5724, -1.7, -2.9445], [6.5724, -2.3, -3.9837], [3.9058, -2.3, -3.9837]], collide: 1}
      - {kind: loft, a: [[3.9058, -1.7, -2.9445], [6.5724, -1.7, -2.9445], [6.5724, -2.3, -3.9837], [3.9058, -2.3, -3.9837]], b: [[3.7669, -1.4369, -3.0814], [6.5724, -1.4369, -3.0814], [6.5724, -1.944, -4.169], [3.7669, -1.944, -4.169]], collide: 1}
      - {kind: loft, a: [[3.7669, -1.4369, -3.0814], [6.5724, -1.4369, -3.0814], [6.5724, -1.944, -4.169], [3.7669, -1.944, -4.169]], b: [[3.628, -1.1629, -3.195], [6.5724, -1.1629, -3.195], [6.5724, -1.5733, -4.3226], [3.628, -1.5733, -4.3226]], collide: 1}
      - {kind: loft, a: [[3.628, -1.1629, -3.195], [6.5724, -1.1629, -3.195], [6.5724, -1.5733, -4.3226], [3.628, -1.5733, -4.3226]], b: [[3.4891, -0.88, -3.2841], [6.5724, -0.88, -3.2841], [6.5724, -1.1906, -4.4433], [3.4891, -1.1906, -4.4433]], collide: 1}
      - {kind: loft, a: [[3.4891, -0.88, -3.2841], [6.5724, -0.88, -3.2841], [6.5724, -1.1906, -4.4433], [3.4891, -1.1906, -4.4433]], b: [[3.3502, -0.5904, -3.3483], [6.5724, -0.5904, -3.3483], [6.5724, -0.7988, -4.5301], [3.3502, -0.7988, -4.5301]], collide: 1}
      - {kind: loft, a: [[3.3502, -0.5904, -3.3483], [6.5724, -0.5904, -3.3483], [6.5724, -0.7988, -4.5301], [3.3502, -0.7988, -4.5301]], b: [[3.2113, -0.2963, -3.3871], [6.5724, -0.2963, -3.3871], [6.5724, -0.4009, -4.5825], [3.2113, -0.4009, -4.5825]], collide: 1}
      - {kind: loft, a: [[3.2113, -0.2963, -3.3871], [6.5724, -0.2963, -3.3871], [6.5724, -0.4009, -4.5825], [3.2113, -0.4009, -4.5825]], b: [[3.0724, -0.0, -3.4], [6.5724, -0.0, -3.4], [6.5724, -0.0, -4.6], [3.0724, -0.0, -4.6]], collide: 1}
      - {kind: loft, a: [[3.0724, -0.0, -3.4], [6.5724, -0.0, -3.4], [6.5724, -0.0, -4.6], [3.0724, -0.0, -4.6]], b: [[2.9335, 0.2963, -3.3871], [6.5724, 0.2963, -3.3871], [6.5724, 0.4009, -4.5825], [2.9335, 0.4009, -4.5825]], collide: 1}
      - {kind: loft, a: [[2.9335, 0.2963, -3.3871], [6.5724, 0.2963, -3.3871], [6.5724, 0.4009, -4.5825], [2.9335, 0.4009, -4.5825]], b: [[2.7947, 0.5904, -3.3483], [6.5724, 0.5904, -3.3483], [6.5724, 0.7988, -4.5301], [2.7947, 0.7988, -4.5301]], collide: 1}
      - {kind: loft, a: [[2.7947, 0.5904, -3.3483], [6.5724, 0.5904, -3.3483], [6.5724, 0.7988, -4.5301], [2.7947, 0.7988, -4.5301]], b: [[2.6558, 0.88, -3.2841], [6.5724, 0.88, -3.2841], [6.5724, 1.1906, -4.4433], [2.6558, 1.1906, -4.4433]], collide: 1}
      - {kind: loft, a: [[2.6558, 0.88, -3.2841], [6.5724, 0.88, -3.2841], [6.5724, 1.1906, -4.4433], [2.6558, 1.1906, -4.4433]], b: [[2.5169, 1.1629, -3.195], [6.5724, 1.1629, -3.195], [6.5724, 1.5733, -4.3226], [2.5169, 1.5733, -4.3226]], collide: 1}
      - {kind: loft, a: [[2.5169, 1.1629, -3.195], [6.5724, 1.1629, -3.195], [6.5724, 1.5733, -4.3226], [2.5169, 1.5733, -4.3226]], b: [[2.378, 1.4369, -3.0814], [6.5724, 1.4369, -3.0814], [6.5724, 1.944, -4.169], [2.378, 1.944, -4.169]], collide: 1}
      - {kind: loft, a: [[2.378, 1.4369, -3.0814], [6.5724, 1.4369, -3.0814], [6.5724, 1.944, -4.169], [2.378, 1.944, -4.169]], b: [[2.2391, 1.7, -2.9445], [6.5724, 1.7, -2.9445], [6.5724, 2.3, -3.9837], [2.2391, 2.3, -3.9837]], collide: 1}
      - {kind: loft, a: [[2.2391, 1.7, -2.9445], [6.5724, 1.7, -2.9445], [6.5724, 2.3, -3.9837], [2.2391, 2.3, -3.9837]], b: [[2.1002, 1.9502, -2.7851], [6.5724, 1.9502, -2.7851], [6.5724, 2.6385, -3.7681], [2.1002, 2.6385, -3.7681]], collide: 1}
      - {kind: loft, a: [[2.1002, 1.9502, -2.7851], [6.5724, 1.9502, -2.7851], [6.5724, 2.6385, -3.7681], [2.1002, 2.6385, -3.7681]], b: [[1.9613, 2.1855, -2.6046], [6.5724, 2.1855, -2.6046], [6.5724, 2.9568, -3.5238], [1.9613, 2.9568, -3.5238]], collide: 1}
      - {kind: loft, a: [[1.9613, 2.1855, -2.6046], [6.5724, 2.1855, -2.6046], [6.5724, 2.9568, -3.5238], [1.9613, 2.9568, -3.5238]], b: [[1.8224, 2.4042, -2.4042], [6.5724, 2.4042, -2.4042], [6.5724, 3.2527, -3.2527], [1.8224, 3.2527, -3.2527]], collide: 1}
      - {kind: loft, a: [[1.8224, 2.4042, -2.4042], [6.5724, 2.4042, -2.4042], [6.5724, 3.2527, -3.2527], [1.8224, 3.2527, -3.2527]], b: [[1.6835, 2.6046, -2.1855], [6.5724, 2.6046, -2.1855], [6.5724, 3.5238, -2.9568], [1.6835, 3.5238, -2.9568]], collide: 1}
      - {kind: loft, a: [[1.6835, 2.6046, -2.1855], [6.5724, 2.6046, -2.1855], [6.5724, 3.5238, -2.9568], [1.6835, 3.5238, -2.9568]], b: [[1.5447, 2.7851, -1.9502], [6.5724, 2.7851, -1.9502], [6.5724, 3.7681, -2.6385], [1.5447, 3.7681, -2.6385]], collide: 1}
      - {kind: loft, a: [[1.5447, 2.7851, -1.9502], [6.5724, 2.7851, -1.9502], [6.5724, 3.7681, -2.6385], [1.5447, 3.7681, -2.6385]], b: [[1.4058, 2.9445, -1.7], [6.5724, 2.9445, -1.7], [6.5724, 3.9837, -2.3], [1.4058, 3.9837, -2.3]], collide: 1}
      - {kind: loft, a: [[1.4058, 2.9445, -1.7], [6.5724, 2.9445, -1.7], [6.5724, 3.9837, -2.3], [1.4058, 3.9837, -2.3]], b: [[1.2669, 3.0814, -1.4369], [6.5724, 3.0814, -1.4369], [6.5724, 4.169, -1.944], [1.2669, 4.169, -1.944]], collide: 1}
      - {kind: loft, a: [[1.2669, 3.0814, -1.4369], [6.5724, 3.0814, -1.4369], [6.5724, 4.169, -1.944], [1.2669, 4.169, -1.944]], b: [[1.128, 3.195, -1.1629], [6.5724, 3.195, -1.1629], [6.5724, 4.3226, -1.5733], [1.128, 4.3226, -1.5733]], collide: 1}
      - {kind: loft, a: [[1.128, 3.195, -1.1629], [6.5724, 3.195, -1.1629], [6.5724, 4.3226, -1.5733], [1.128, 4.3226, -1.5733]], b: [[1.0002, 3.2841, -0.88], [6.5724, 3.2841, -0.88], [6.5724, 4.4433, -1.1906], [1.0002, 4.4433, -1.1906]], collide: 1}
      - {kind: loft, a: [[1.0002, 3.2841, -0.88], [6.5724, 3.2841, -0.88], [6.5724, 4.4433, -1.1906], [1.0002, 4.4433, -1.1906]], b: [[0.907, 3.3483, -0.5904], [6.5724, 3.3483, -0.5904], [6.5724, 4.5301, -0.7988], [0.907, 4.5301, -0.7988]], collide: 1}
      - {kind: loft, a: [[0.907, 3.3483, -0.5904], [6.5724, 3.3483, -0.5904], [6.5724, 4.5301, -0.7988], [0.907, 4.5301, -0.7988]], b: [[0.8534, 3.3871, -0.2963], [6.5724, 3.3871, -0.2963], [6.5724, 4.5825, -0.4009], [0.8534, 4.5825, -0.4009]], collide: 1}
      - {kind: loft, a: [[0.8534, 3.3871, -0.2963], [6.5724, 3.3871, -0.2963], [6.5724, 4.5825, -0.4009], [0.8534, 4.5825, -0.4009]], b: [[0.8329, 3.4, -0.0], [6.5724, 3.4, -0.0], [6.5724, 4.6, -0.0], [0.8329, 4.6, -0.0]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.4, 0.0], [-0.312, 3.4, 0.0], [-0.312, 4.6, 0.0], [-1.5724, 4.6, 0.0]], b: [[-1.5724, 3.3871, 0.2963], [-0.2915, 3.3871, 0.2963], [-0.2915, 4.5825, 0.4009], [-1.5724, 4.5825, 0.4009]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.3871, 0.2963], [-0.2915, 3.3871, 0.2963], [-0.2915, 4.5825, 0.4009], [-1.5724, 4.5825, 0.4009]], b: [[-1.5724, 3.3483, 0.5904], [-0.2378, 3.3483, 0.5904], [-0.2378, 4.5301, 0.7988], [-1.5724, 4.5301, 0.7988]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.3483, 0.5904], [-0.2378, 3.3483, 0.5904], [-0.2378, 4.5301, 0.7988], [-1.5724, 4.5301, 0.7988]], b: [[-1.5724, 3.2841, 0.88], [-0.1447, 3.2841, 0.88], [-0.1447, 4.4433, 1.1906], [-1.5724, 4.4433, 1.1906]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.2841, 0.88], [-0.1447, 3.2841, 0.88], [-0.1447, 4.4433, 1.1906], [-1.5724, 4.4433, 1.1906]], b: [[-1.5724, 3.195, 1.1629], [-0.0169, 3.195, 1.1629], [-0.0169, 4.3226, 1.5733], [-1.5724, 4.3226, 1.5733]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.195, 1.1629], [-0.0169, 3.195, 1.1629], [-0.0169, 4.3226, 1.5733], [-1.5724, 4.3226, 1.5733]], b: [[-1.5724, 3.0814, 1.4369], [0.122, 3.0814, 1.4369], [0.122, 4.169, 1.944], [-1.5724, 4.169, 1.944]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.0814, 1.4369], [0.122, 3.0814, 1.4369], [0.122, 4.169, 1.944], [-1.5724, 4.169, 1.944]], b: [[-1.5724, 2.9445, 1.7], [0.2609, 2.9445, 1.7], [0.2609, 3.9837, 2.3], [-1.5724, 3.9837, 2.3]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.9445, 1.7], [0.2609, 2.9445, 1.7], [0.2609, 3.9837, 2.3], [-1.5724, 3.9837, 2.3]], b: [[-1.5724, 2.7851, 1.9502], [0.3998, 2.7851, 1.9502], [0.3998, 3.7681, 2.6385], [-1.5724, 3.7681, 2.6385]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.7851, 1.9502], [0.3998, 2.7851, 1.9502], [0.3998, 3.7681, 2.6385], [-1.5724, 3.7681, 2.6385]], b: [[-1.5724, 2.6046, 2.1855], [0.5387, 2.6046, 2.1855], [0.5387, 3.5238, 2.9568], [-1.5724, 3.5238, 2.9568]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.6046, 2.1855], [0.5387, 2.6046, 2.1855], [0.5387, 3.5238, 2.9568], [-1.5724, 3.5238, 2.9568]], b: [[-1.5724, 2.4042, 2.4042], [0.6776, 2.4042, 2.4042], [0.6776, 3.2527, 3.2527], [-1.5724, 3.2527, 3.2527]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.4042, 2.4042], [0.6776, 2.4042, 2.4042], [0.6776, 3.2527, 3.2527], [-1.5724, 3.2527, 3.2527]], b: [[-1.5724, 2.1855, 2.6046], [0.8165, 2.1855, 2.6046], [0.8165, 2.9568, 3.5238], [-1.5724, 2.9568, 3.5238]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.1855, 2.6046], [0.8165, 2.1855, 2.6046], [0.8165, 2.9568, 3.5238], [-1.5724, 2.9568, 3.5238]], b: [[-1.5724, 1.9502, 2.7851], [0.9553, 1.9502, 2.7851], [0.9553, 2.6385, 3.7681], [-1.5724, 2.6385, 3.7681]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.9502, 2.7851], [0.9553, 1.9502, 2.7851], [0.9553, 2.6385, 3.7681], [-1.5724, 2.6385, 3.7681]], b: [[-1.5724, 1.7, 2.9445], [1.0942, 1.7, 2.9445], [1.0942, 2.3, 3.9837], [-1.5724, 2.3, 3.9837]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.7, 2.9445], [1.0942, 1.7, 2.9445], [1.0942, 2.3, 3.9837], [-1.5724, 2.3, 3.9837]], b: [[-1.5724, 1.4369, 3.0814], [1.2331, 1.4369, 3.0814], [1.2331, 1.944, 4.169], [-1.5724, 1.944, 4.169]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.4369, 3.0814], [1.2331, 1.4369, 3.0814], [1.2331, 1.944, 4.169], [-1.5724, 1.944, 4.169]], b: [[-1.5724, 1.1629, 3.195], [1.372, 1.1629, 3.195], [1.372, 1.5733, 4.3226], [-1.5724, 1.5733, 4.3226]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.1629, 3.195], [1.372, 1.1629, 3.195], [1.372, 1.5733, 4.3226], [-1.5724, 1.5733, 4.3226]], b: [[-1.5724, 0.88, 3.2841], [1.5109, 0.88, 3.2841], [1.5109, 1.1906, 4.4433], [-1.5724, 1.1906, 4.4433]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.88, 3.2841], [1.5109, 0.88, 3.2841], [1.5109, 1.1906, 4.4433], [-1.5724, 1.1906, 4.4433]], b: [[-1.5724, 0.5904, 3.3483], [1.6498, 0.5904, 3.3483], [1.6498, 0.7988, 4.5301], [-1.5724, 0.7988, 4.5301]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.5904, 3.3483], [1.6498, 0.5904, 3.3483], [1.6498, 0.7988, 4.5301], [-1.5724, 0.7988, 4.5301]], b: [[-1.5724, 0.2963, 3.3871], [1.7887, 0.2963, 3.3871], [1.7887, 0.4009, 4.5825], [-1.5724, 0.4009, 4.5825]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.2963, 3.3871], [1.7887, 0.2963, 3.3871], [1.7887, 0.4009, 4.5825], [-1.5724, 0.4009, 4.5825]], b: [[-1.5724, 0.0, 3.4], [1.9276, 0.0, 3.4], [1.9276, 0.0, 4.6], [-1.5724, 0.0, 4.6]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.0, 3.4], [1.9276, 0.0, 3.4], [1.9276, 0.0, 4.6], [-1.5724, 0.0, 4.6]], b: [[-1.5724, -0.2963, 3.3871], [2.0665, -0.2963, 3.3871], [2.0665, -0.4009, 4.5825], [-1.5724, -0.4009, 4.5825]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.2963, 3.3871], [2.0665, -0.2963, 3.3871], [2.0665, -0.4009, 4.5825], [-1.5724, -0.4009, 4.5825]], b: [[-1.5724, -0.5904, 3.3483], [2.2053, -0.5904, 3.3483], [2.2053, -0.7988, 4.5301], [-1.5724, -0.7988, 4.5301]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.5904, 3.3483], [2.2053, -0.5904, 3.3483], [2.2053, -0.7988, 4.5301], [-1.5724, -0.7988, 4.5301]], b: [[-1.5724, -0.88, 3.2841], [2.3442, -0.88, 3.2841], [2.3442, -1.1906, 4.4433], [-1.5724, -1.1906, 4.4433]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.88, 3.2841], [2.3442, -0.88, 3.2841], [2.3442, -1.1906, 4.4433], [-1.5724, -1.1906, 4.4433]], b: [[-1.5724, -1.1629, 3.195], [2.4831, -1.1629, 3.195], [2.4831, -1.5733, 4.3226], [-1.5724, -1.5733, 4.3226]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.1629, 3.195], [2.4831, -1.1629, 3.195], [2.4831, -1.5733, 4.3226], [-1.5724, -1.5733, 4.3226]], b: [[-1.5724, -1.4369, 3.0814], [2.622, -1.4369, 3.0814], [2.622, -1.944, 4.169], [-1.5724, -1.944, 4.169]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.4369, 3.0814], [2.622, -1.4369, 3.0814], [2.622, -1.944, 4.169], [-1.5724, -1.944, 4.169]], b: [[-1.5724, -1.7, 2.9445], [2.7609, -1.7, 2.9445], [2.7609, -2.3, 3.9837], [-1.5724, -2.3, 3.9837]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.7, 2.9445], [2.7609, -1.7, 2.9445], [2.7609, -2.3, 3.9837], [-1.5724, -2.3, 3.9837]], b: [[-1.5724, -1.9502, 2.7851], [2.8998, -1.9502, 2.7851], [2.8998, -2.6385, 3.7681], [-1.5724, -2.6385, 3.7681]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.9502, 2.7851], [2.8998, -1.9502, 2.7851], [2.8998, -2.6385, 3.7681], [-1.5724, -2.6385, 3.7681]], b: [[-1.5724, -2.1855, 2.6046], [3.0387, -2.1855, 2.6046], [3.0387, -2.9568, 3.5238], [-1.5724, -2.9568, 3.5238]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.1855, 2.6046], [3.0387, -2.1855, 2.6046], [3.0387, -2.9568, 3.5238], [-1.5724, -2.9568, 3.5238]], b: [[-1.5724, -2.4042, 2.4042], [3.1776, -2.4042, 2.4042], [3.1776, -3.2527, 3.2527], [-1.5724, -3.2527, 3.2527]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.4042, 2.4042], [3.1776, -2.4042, 2.4042], [3.1776, -3.2527, 3.2527], [-1.5724, -3.2527, 3.2527]], b: [[-1.5724, -2.6046, 2.1855], [3.3165, -2.6046, 2.1855], [3.3165, -3.5238, 2.9568], [-1.5724, -3.5238, 2.9568]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.6046, 2.1855], [3.3165, -2.6046, 2.1855], [3.3165, -3.5238, 2.9568], [-1.5724, -3.5238, 2.9568]], b: [[-1.5724, -2.7851, 1.9502], [3.4553, -2.7851, 1.9502], [3.4553, -3.7681, 2.6385], [-1.5724, -3.7681, 2.6385]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.7851, 1.9502], [3.4553, -2.7851, 1.9502], [3.4553, -3.7681, 2.6385], [-1.5724, -3.7681, 2.6385]], b: [[-1.5724, -2.9445, 1.7], [3.5942, -2.9445, 1.7], [3.5942, -3.9837, 2.3], [-1.5724, -3.9837, 2.3]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.9445, 1.7], [3.5942, -2.9445, 1.7], [3.5942, -3.9837, 2.3], [-1.5724, -3.9837, 2.3]], b: [[-1.5724, -3.0814, 1.4369], [3.7331, -3.0814, 1.4369], [3.7331, -4.169, 1.944], [-1.5724, -4.169, 1.944]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.0814, 1.4369], [3.7331, -3.0814, 1.4369], [3.7331, -4.169, 1.944], [-1.5724, -4.169, 1.944]], b: [[-1.5724, -3.195, 1.1629], [3.872, -3.195, 1.1629], [3.872, -4.3226, 1.5733], [-1.5724, -4.3226, 1.5733]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.195, 1.1629], [3.872, -3.195, 1.1629], [3.872, -4.3226, 1.5733], [-1.5724, -4.3226, 1.5733]], b: [[-1.5724, -3.2841, 0.88], [3.9998, -3.2841, 0.88], [3.9998, -4.4433, 1.1906], [-1.5724, -4.4433, 1.1906]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.2841, 0.88], [3.9998, -3.2841, 0.88], [3.9998, -4.4433, 1.1906], [-1.5724, -4.4433, 1.1906]], b: [[-1.5724, -3.3483, 0.5904], [4.093, -3.3483, 0.5904], [4.093, -4.5301, 0.7988], [-1.5724, -4.5301, 0.7988]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.3483, 0.5904], [4.093, -3.3483, 0.5904], [4.093, -4.5301, 0.7988], [-1.5724, -4.5301, 0.7988]], b: [[-1.5724, -3.3871, 0.2963], [4.1466, -3.3871, 0.2963], [4.1466, -4.5825, 0.4009], [-1.5724, -4.5825, 0.4009]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.3871, 0.2963], [4.1466, -3.3871, 0.2963], [4.1466, -4.5825, 0.4009], [-1.5724, -4.5825, 0.4009]], b: [[-1.5724, -3.4, 0.0], [4.1671, -3.4, 0.0], [4.1671, -4.6, 0.0], [-1.5724, -4.6, 0.0]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.4, 0.0], [4.1671, -3.4, 0.0], [4.1671, -4.6, 0.0], [-1.5724, -4.6, 0.0]], b: [[-1.5724, -3.3871, -0.2963], [4.1466, -3.3871, -0.2963], [4.1466, -4.5825, -0.4009], [-1.5724, -4.5825, -0.4009]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.3871, -0.2963], [4.1466, -3.3871, -0.2963], [4.1466, -4.5825, -0.4009], [-1.5724, -4.5825, -0.4009]], b: [[-1.5724, -3.3483, -0.5904], [4.093, -3.3483, -0.5904], [4.093, -4.5301, -0.7988], [-1.5724, -4.5301, -0.7988]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.3483, -0.5904], [4.093, -3.3483, -0.5904], [4.093, -4.5301, -0.7988], [-1.5724, -4.5301, -0.7988]], b: [[-1.5724, -3.2841, -0.88], [3.9998, -3.2841, -0.88], [3.9998, -4.4433, -1.1906], [-1.5724, -4.4433, -1.1906]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.2841, -0.88], [3.9998, -3.2841, -0.88], [3.9998, -4.4433, -1.1906], [-1.5724, -4.4433, -1.1906]], b: [[-1.5724, -3.195, -1.1629], [3.872, -3.195, -1.1629], [3.872, -4.3226, -1.5733], [-1.5724, -4.3226, -1.5733]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.195, -1.1629], [3.872, -3.195, -1.1629], [3.872, -4.3226, -1.5733], [-1.5724, -4.3226, -1.5733]], b: [[-1.5724, -3.0814, -1.4369], [3.7331, -3.0814, -1.4369], [3.7331, -4.169, -1.944], [-1.5724, -4.169, -1.944]], collide: 1}
      - {kind: loft, a: [[-1.5724, -3.0814, -1.4369], [3.7331, -3.0814, -1.4369], [3.7331, -4.169, -1.944], [-1.5724, -4.169, -1.944]], b: [[-1.5724, -2.9445, -1.7], [3.5942, -2.9445, -1.7], [3.5942, -3.9837, -2.3], [-1.5724, -3.9837, -2.3]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.9445, -1.7], [3.5942, -2.9445, -1.7], [3.5942, -3.9837, -2.3], [-1.5724, -3.9837, -2.3]], b: [[-1.5724, -2.7851, -1.9502], [3.4553, -2.7851, -1.9502], [3.4553, -3.7681, -2.6385], [-1.5724, -3.7681, -2.6385]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.7851, -1.9502], [3.4553, -2.7851, -1.9502], [3.4553, -3.7681, -2.6385], [-1.5724, -3.7681, -2.6385]], b: [[-1.5724, -2.6046, -2.1855], [3.3165, -2.6046, -2.1855], [3.3165, -3.5238, -2.9568], [-1.5724, -3.5238, -2.9568]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.6046, -2.1855], [3.3165, -2.6046, -2.1855], [3.3165, -3.5238, -2.9568], [-1.5724, -3.5238, -2.9568]], b: [[-1.5724, -2.4042, -2.4042], [3.1776, -2.4042, -2.4042], [3.1776, -3.2527, -3.2527], [-1.5724, -3.2527, -3.2527]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.4042, -2.4042], [3.1776, -2.4042, -2.4042], [3.1776, -3.2527, -3.2527], [-1.5724, -3.2527, -3.2527]], b: [[-1.5724, -2.1855, -2.6046], [3.0387, -2.1855, -2.6046], [3.0387, -2.9568, -3.5238], [-1.5724, -2.9568, -3.5238]], collide: 1}
      - {kind: loft, a: [[-1.5724, -2.1855, -2.6046], [3.0387, -2.1855, -2.6046], [3.0387, -2.9568, -3.5238], [-1.5724, -2.9568, -3.5238]], b: [[-1.5724, -1.9502, -2.7851], [2.8998, -1.9502, -2.7851], [2.8998, -2.6385, -3.7681], [-1.5724, -2.6385, -3.7681]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.9502, -2.7851], [2.8998, -1.9502, -2.7851], [2.8998, -2.6385, -3.7681], [-1.5724, -2.6385, -3.7681]], b: [[-1.5724, -1.7, -2.9445], [2.7609, -1.7, -2.9445], [2.7609, -2.3, -3.9837], [-1.5724, -2.3, -3.9837]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.7, -2.9445], [2.7609, -1.7, -2.9445], [2.7609, -2.3, -3.9837], [-1.5724, -2.3, -3.9837]], b: [[-1.5724, -1.4369, -3.0814], [2.622, -1.4369, -3.0814], [2.622, -1.944, -4.169], [-1.5724, -1.944, -4.169]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.4369, -3.0814], [2.622, -1.4369, -3.0814], [2.622, -1.944, -4.169], [-1.5724, -1.944, -4.169]], b: [[-1.5724, -1.1629, -3.195], [2.4831, -1.1629, -3.195], [2.4831, -1.5733, -4.3226], [-1.5724, -1.5733, -4.3226]], collide: 1}
      - {kind: loft, a: [[-1.5724, -1.1629, -3.195], [2.4831, -1.1629, -3.195], [2.4831, -1.5733, -4.3226], [-1.5724, -1.5733, -4.3226]], b: [[-1.5724, -0.88, -3.2841], [2.3442, -0.88, -3.2841], [2.3442, -1.1906, -4.4433], [-1.5724, -1.1906, -4.4433]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.88, -3.2841], [2.3442, -0.88, -3.2841], [2.3442, -1.1906, -4.4433], [-1.5724, -1.1906, -4.4433]], b: [[-1.5724, -0.5904, -3.3483], [2.2053, -0.5904, -3.3483], [2.2053, -0.7988, -4.5301], [-1.5724, -0.7988, -4.5301]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.5904, -3.3483], [2.2053, -0.5904, -3.3483], [2.2053, -0.7988, -4.5301], [-1.5724, -0.7988, -4.5301]], b: [[-1.5724, -0.2963, -3.3871], [2.0665, -0.2963, -3.3871], [2.0665, -0.4009, -4.5825], [-1.5724, -0.4009, -4.5825]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.2963, -3.3871], [2.0665, -0.2963, -3.3871], [2.0665, -0.4009, -4.5825], [-1.5724, -0.4009, -4.5825]], b: [[-1.5724, -0.0, -3.4], [1.9276, -0.0, -3.4], [1.9276, -0.0, -4.6], [-1.5724, -0.0, -4.6]], collide: 1}
      - {kind: loft, a: [[-1.5724, -0.0, -3.4], [1.9276, -0.0, -3.4], [1.9276, -0.0, -4.6], [-1.5724, -0.0, -4.6]], b: [[-1.5724, 0.2963, -3.3871], [1.7887, 0.2963, -3.3871], [1.7887, 0.4009, -4.5825], [-1.5724, 0.4009, -4.5825]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.2963, -3.3871], [1.7887, 0.2963, -3.3871], [1.7887, 0.4009, -4.5825], [-1.5724, 0.4009, -4.5825]], b: [[-1.5724, 0.5904, -3.3483], [1.6498, 0.5904, -3.3483], [1.6498, 0.7988, -4.5301], [-1.5724, 0.7988, -4.5301]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.5904, -3.3483], [1.6498, 0.5904, -3.3483], [1.6498, 0.7988, -4.5301], [-1.5724, 0.7988, -4.5301]], b: [[-1.5724, 0.88, -3.2841], [1.5109, 0.88, -3.2841], [1.5109, 1.1906, -4.4433], [-1.5724, 1.1906, -4.4433]], collide: 1}
      - {kind: loft, a: [[-1.5724, 0.88, -3.2841], [1.5109, 0.88, -3.2841], [1.5109, 1.1906, -4.4433], [-1.5724, 1.1906, -4.4433]], b: [[-1.5724, 1.1629, -3.195], [1.372, 1.1629, -3.195], [1.372, 1.5733, -4.3226], [-1.5724, 1.5733, -4.3226]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.1629, -3.195], [1.372, 1.1629, -3.195], [1.372, 1.5733, -4.3226], [-1.5724, 1.5733, -4.3226]], b: [[-1.5724, 1.4369, -3.0814], [1.2331, 1.4369, -3.0814], [1.2331, 1.944, -4.169], [-1.5724, 1.944, -4.169]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.4369, -3.0814], [1.2331, 1.4369, -3.0814], [1.2331, 1.944, -4.169], [-1.5724, 1.944, -4.169]], b: [[-1.5724, 1.7, -2.9445], [1.0942, 1.7, -2.9445], [1.0942, 2.3, -3.9837], [-1.5724, 2.3, -3.9837]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.7, -2.9445], [1.0942, 1.7, -2.9445], [1.0942, 2.3, -3.9837], [-1.5724, 2.3, -3.9837]], b: [[-1.5724, 1.9502, -2.7851], [0.9553, 1.9502, -2.7851], [0.9553, 2.6385, -3.7681], [-1.5724, 2.6385, -3.7681]], collide: 1}
      - {kind: loft, a: [[-1.5724, 1.9502, -2.7851], [0.9553, 1.9502, -2.7851], [0.9553, 2.6385, -3.7681], [-1.5724, 2.6385, -3.7681]], b: [[-1.5724, 2.1855, -2.6046], [0.8165, 2.1855, -2.6046], [0.8165, 2.9568, -3.5238], [-1.5724, 2.9568, -3.5238]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.1855, -2.6046], [0.8165, 2.1855, -2.6046], [0.8165, 2.9568, -3.5238], [-1.5724, 2.9568, -3.5238]], b: [[-1.5724, 2.4042, -2.4042], [0.6776, 2.4042, -2.4042], [0.6776, 3.2527, -3.2527], [-1.5724, 3.2527, -3.2527]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.4042, -2.4042], [0.6776, 2.4042, -2.4042], [0.6776, 3.2527, -3.2527], [-1.5724, 3.2527, -3.2527]], b: [[-1.5724, 2.6046, -2.1855], [0.5387, 2.6046, -2.1855], [0.5387, 3.5238, -2.9568], [-1.5724, 3.5238, -2.9568]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.6046, -2.1855], [0.5387, 2.6046, -2.1855], [0.5387, 3.5238, -2.9568], [-1.5724, 3.5238, -2.9568]], b: [[-1.5724, 2.7851, -1.9502], [0.3998, 2.7851, -1.9502], [0.3998, 3.7681, -2.6385], [-1.5724, 3.7681, -2.6385]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.7851, -1.9502], [0.3998, 2.7851, -1.9502], [0.3998, 3.7681, -2.6385], [-1.5724, 3.7681, -2.6385]], b: [[-1.5724, 2.9445, -1.7], [0.2609, 2.9445, -1.7], [0.2609, 3.9837, -2.3], [-1.5724, 3.9837, -2.3]], collide: 1}
      - {kind: loft, a: [[-1.5724, 2.9445, -1.7], [0.2609, 2.9445, -1.7], [0.2609, 3.9837, -2.3], [-1.5724, 3.9837, -2.3]], b: [[-1.5724, 3.0814, -1.4369], [0.122, 3.0814, -1.4369], [0.122, 4.169, -1.944], [-1.5724, 4.169, -1.944]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.0814, -1.4369], [0.122, 3.0814, -1.4369], [0.122, 4.169, -1.944], [-1.5724, 4.169, -1.944]], b: [[-1.5724, 3.195, -1.1629], [-0.0169, 3.195, -1.1629], [-0.0169, 4.3226, -1.5733], [-1.5724, 4.3226, -1.5733]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.195, -1.1629], [-0.0169, 3.195, -1.1629], [-0.0169, 4.3226, -1.5733], [-1.5724, 4.3226, -1.5733]], b: [[-1.5724, 3.2841, -0.88], [-0.1447, 3.2841, -0.88], [-0.1447, 4.4433, -1.1906], [-1.5724, 4.4433, -1.1906]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.2841, -0.88], [-0.1447, 3.2841, -0.88], [-0.1447, 4.4433, -1.1906], [-1.5724, 4.4433, -1.1906]], b: [[-1.5724, 3.3483, -0.5904], [-0.2378, 3.3483, -0.5904], [-0.2378, 4.5301, -0.7988], [-1.5724, 4.5301, -0.7988]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.3483, -0.5904], [-0.2378, 3.3483, -0.5904], [-0.2378, 4.5301, -0.7988], [-1.5724, 4.5301, -0.7988]], b: [[-1.5724, 3.3871, -0.2963], [-0.2915, 3.3871, -0.2963], [-0.2915, 4.5825, -0.4009], [-1.5724, 4.5825, -0.4009]], collide: 1}
      - {kind: loft, a: [[-1.5724, 3.3871, -0.2963], [-0.2915, 3.3871, -0.2963], [-0.2915, 4.5825, -0.4009], [-1.5724, 4.5825, -0.4009]], b: [[-1.5724, 3.4, -0.0], [-0.312, 3.4, -0.0], [-0.312, 4.6, -0.0], [-1.5724, 4.6, -0.0]], collide: 1}
  - id: bar
    shape: part
    pos: [2.5, 0, 6.2]
    mass: 0.3
    friction: 0.05
    color: "#b8ad97"
    pieces:
      - {kind: rod, from: [-0.5, 0, 6.2], to: [14.0, 0, 6.2], radius: 0.5, collide: 0}   # the rod
      - {kind: rod, from: [2.5, 0, 6.2], to: [2.5, 0, 4.15], radius: 0.5, collide: 2, capsule: true, color: "#8f8a80"}   # the pin, in the groove
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: poly, points: [[-4.9724, -7.4], [-3.7724, -7.4], [-3.7724, 1.3], [-4.9724, 1.3]], y: [-1.2, 1.2], collide: 0}   # the left bearing
      - {kind: poly, points: [[8.7724, -7.4], [9.9724, -7.4], [9.9724, 1.3], [8.7724, 1.3]], y: [-1.2, 1.2], collide: 0}   # the right bearing
      - {kind: poly, points: [[-6.5724, -8.4], [11.5724, -8.4], [11.5724, -7.4], [-6.5724, -7.4]], y: [-3, 3], collide: 0, color: "#b9b09c"}   # the base
      - {kind: poly, points: [[-4.0, 11.6], [15.0, 11.6], [15.0, 12.9], [-4.0, 12.9]], y: [-1.0, 2.2], collide: 0, color: "#b9b09c"}   # the beam
      - {kind: poly, points: [[2.6, 5.75], [3.4, 5.75], [3.4, 11.6], [2.6, 11.6]], y: [0.7, 1.5], collide: 0}   # a post hung from the beam
      - {kind: poly, points: [[2.1, 5.45], [3.9, 5.45], [3.9, 5.75], [2.1, 5.75]], y: [-0.5, 1.5], collide: 0}   # and its ledge under the rod
      - {kind: poly, points: [[8.6, 5.75], [9.4, 5.75], [9.4, 11.6], [8.6, 11.6]], y: [0.7, 1.5], collide: 0}   # a post hung from the beam
      - {kind: poly, points: [[8.1, 5.45], [9.9, 5.45], [9.9, 5.75], [8.1, 5.75]], y: [-0.5, 1.5], collide: 0}   # and its ledge under the rod
joints:
  - {id: j_d, type: hinge, body: drum, axis: [1, 0, 0], damping: 0.002}   # the one driven joint
  - {id: j_x, type: slide, body: bar, axis: [1, 0, 0], range: [-2.9, 2.9], damping: 1.0}   # the rod in its posts, held by the groove; + : to the right
driver: {joint: j_d, kind: velocity, rpm: 10.0, kv: 10.0, max_torque: 20.0}
checks:
  - {type: follow, out: j_x, in: j_d, expect: 0.01592, tol: 0.00048, min_r2: 0.995, settle_s: 2.1667, window_s: 1.6667}   # theta 130-230 deg, turn 1
  - {type: follow, out: j_x, in: j_d, expect: -0.01592, tol: 0.00048, min_r2: 0.995, settle_s: 5.1667, window_s: 1.6667}   # theta 310-410 deg, turn 1
  - {type: follow, out: j_x, in: j_d, expect: 0.01592, tol: 0.00048, min_r2: 0.995, settle_s: 8.1667, window_s: 1.6667}   # theta 130-230 deg, turn 2
  - {type: follow, out: j_x, in: j_d, expect: -0.01592, tol: 0.00048, min_r2: 0.995, settle_s: 11.1667, window_s: 1.6667}   # theta 310-410 deg, turn 2
  - {type: position, joint: j_x, min: -2.55, max: 2.55, settle_s: 0.5, window_s: 11}
camera: {target: [4.5, 0, 2.25], position: [4.5, -80, 2.25], fov: 34}
display:
  output: j_x
  labels: {j_d: "Grooved drum (driver)", j_x: "Rod"}
  proof: {label: "Groove walls out of contact", sub: "the drum turns but the rod stands"}

