# No. 237 (Brown 1868): "A reciprocating circular motion of the top arm makes its attached pawl produce an intermittent circular motion of the crown-ratchet or rag-wheel."
#
# Model (cm, gravity on): a crown-ratchet of 20 teeth standing up from its rim (radius 8; each rises counter-clockwise over 0.92 of the pitch to
# a vertical face, 1.2 high) on an upright shaft, against a little bearing friction. On top of the shaft the arm turns to and fro, +-0.2356 rad at 0.5 Hz
# (the one driven joint). On it, over the teeth, the pawl hangs from a pin along the arm, leaning 35 degrees ahead (clockwise) and lying by its
# weight on the teeth. Turning clockwise, its end meets a tooth's face and carries the wheel with it; turning back, it climbs each tooth's slope and drops
# behind it. One tooth clockwise to each to-and-fro. Generator: opencode-runs/batch11/gen237.py.
number: 237
slug: crown-ratchet-rag-wheel
name: A crown-ratchet turned by a pawl on a swinging arm
brown: "A reciprocating circular motion of the top arm makes its attached pawl produce an intermittent circular motion of the crown-ratchet or rag-wheel."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: PGS
  multiccd: false
  duration_s: 12.0
  floor: false
bodies:
  - id: wheel
    shape: part
    pos: [0, 0, 0]
    friction: 0.1
    color: "#d9cfb6"
    pieces:
      - {kind: loft, a: [[7.3926, -0.3305, 0.0], [7.1802, 1.7902, 0.0], [7.1802, 1.7902, 1.2]], b: [[8.5914, -0.3841, 0.0], [8.3445, 2.0805, 0.0], [8.3445, 2.0805, 1.2]], collide: 1}
      - {kind: loft, a: [[7.1329, 1.9701, 0.0], [6.2756, 3.9214, 0.0], [6.2756, 3.9214, 1.2]], b: [[8.2896, 2.2896, 0.0], [7.2932, 4.5573, 0.0], [7.2932, 4.5573, 1.2]], collide: 1}
      - {kind: loft, a: [[6.175, 4.0779, 0.0], [4.7566, 5.6687, 0.0], [4.7566, 5.6687, 1.2]], b: [[7.1764, 4.7391, 0.0], [5.528, 6.588, 0.0], [5.528, 6.588, 1.2]], collide: 1}
      - {kind: loft, a: [[4.6127, 5.7865, 0.0], [2.7721, 6.8612, 0.0], [2.7721, 6.8612, 1.2]], b: [[5.3607, 6.7248, 0.0], [3.2216, 7.9738, 0.0], [3.2216, 7.9738, 1.2]], collide: 1}
      - {kind: loft, a: [[2.5988, 6.9287, 0.0], [0.5162, 7.382, 0.0], [0.5162, 7.382, 1.2]], b: [[3.0202, 8.0522, 0.0], [0.5999, 8.5791, 0.0], [0.5999, 8.5791, 1.2]], collide: 1}
      - {kind: loft, a: [[0.3305, 7.3926, 0.0], [-1.7902, 7.1802, 0.0], [-1.7902, 7.1802, 1.2]], b: [[0.3841, 8.5914, 0.0], [-2.0805, 8.3445, 0.0], [-2.0805, 8.3445, 1.2]], collide: 1}
      - {kind: loft, a: [[-1.9701, 7.1329, 0.0], [-3.9214, 6.2756, 0.0], [-3.9214, 6.2756, 1.2]], b: [[-2.2896, 8.2896, 0.0], [-4.5573, 7.2932, 0.0], [-4.5573, 7.2932, 1.2]], collide: 1}
      - {kind: loft, a: [[-4.0779, 6.175, 0.0], [-5.6687, 4.7566, 0.0], [-5.6687, 4.7566, 1.2]], b: [[-4.7391, 7.1764, 0.0], [-6.588, 5.528, 0.0], [-6.588, 5.528, 1.2]], collide: 1}
      - {kind: loft, a: [[-5.7865, 4.6127, 0.0], [-6.8612, 2.7721, 0.0], [-6.8612, 2.7721, 1.2]], b: [[-6.7248, 5.3607, 0.0], [-7.9738, 3.2216, 0.0], [-7.9738, 3.2216, 1.2]], collide: 1}
      - {kind: loft, a: [[-6.9287, 2.5988, 0.0], [-7.382, 0.5162, 0.0], [-7.382, 0.5162, 1.2]], b: [[-8.0522, 3.0202, 0.0], [-8.5791, 0.5999, 0.0], [-8.5791, 0.5999, 1.2]], collide: 1}
      - {kind: loft, a: [[-7.3926, 0.3305, 0.0], [-7.1802, -1.7902, 0.0], [-7.1802, -1.7902, 1.2]], b: [[-8.5914, 0.3841, 0.0], [-8.3445, -2.0805, 0.0], [-8.3445, -2.0805, 1.2]], collide: 1}
      - {kind: loft, a: [[-7.1329, -1.9701, 0.0], [-6.2756, -3.9214, 0.0], [-6.2756, -3.9214, 1.2]], b: [[-8.2896, -2.2896, 0.0], [-7.2932, -4.5573, 0.0], [-7.2932, -4.5573, 1.2]], collide: 1}
      - {kind: loft, a: [[-6.175, -4.0779, 0.0], [-4.7566, -5.6687, 0.0], [-4.7566, -5.6687, 1.2]], b: [[-7.1764, -4.7391, 0.0], [-5.528, -6.588, 0.0], [-5.528, -6.588, 1.2]], collide: 1}
      - {kind: loft, a: [[-4.6127, -5.7865, 0.0], [-2.7721, -6.8612, 0.0], [-2.7721, -6.8612, 1.2]], b: [[-5.3607, -6.7248, 0.0], [-3.2216, -7.9738, 0.0], [-3.2216, -7.9738, 1.2]], collide: 1}
      - {kind: loft, a: [[-2.5988, -6.9287, 0.0], [-0.5162, -7.382, 0.0], [-0.5162, -7.382, 1.2]], b: [[-3.0202, -8.0522, 0.0], [-0.5999, -8.5791, 0.0], [-0.5999, -8.5791, 1.2]], collide: 1}
      - {kind: loft, a: [[-0.3305, -7.3926, 0.0], [1.7902, -7.1802, 0.0], [1.7902, -7.1802, 1.2]], b: [[-0.3841, -8.5914, 0.0], [2.0805, -8.3445, 0.0], [2.0805, -8.3445, 1.2]], collide: 1}
      - {kind: loft, a: [[1.9701, -7.1329, 0.0], [3.9214, -6.2756, 0.0], [3.9214, -6.2756, 1.2]], b: [[2.2896, -8.2896, 0.0], [4.5573, -7.2932, 0.0], [4.5573, -7.2932, 1.2]], collide: 1}
      - {kind: loft, a: [[4.0779, -6.175, 0.0], [5.6687, -4.7566, 0.0], [5.6687, -4.7566, 1.2]], b: [[4.7391, -7.1764, 0.0], [6.588, -5.528, 0.0], [6.588, -5.528, 1.2]], collide: 1}
      - {kind: loft, a: [[5.7865, -4.6127, 0.0], [6.8612, -2.7721, 0.0], [6.8612, -2.7721, 1.2]], b: [[6.7248, -5.3607, 0.0], [7.9738, -3.2216, 0.0], [7.9738, -3.2216, 1.2]], collide: 1}
      - {kind: loft, a: [[6.9287, -2.5988, 0.0], [7.382, -0.5162, 0.0], [7.382, -0.5162, 1.2]], b: [[8.0522, -3.0202, 0.0], [8.5791, -0.5999, 0.0], [8.5791, -0.5999, 1.2]], collide: 1}
      - {kind: loft, a: [[7.4, 0.0, -2.4], [8.6, 0.0, -2.4], [8.4941, 1.3453, -2.4], [7.3089, 1.1576, -2.4]], b: [[7.4, 0.0, 0.0], [8.6, 0.0, 0.0], [8.4941, 1.3453, 0.0], [7.3089, 1.1576, 0.0]]}
      - {kind: loft, a: [[7.3089, 1.1576, -2.4], [8.4941, 1.3453, -2.4], [8.1791, 2.6575, -2.4], [7.0378, 2.2867, -2.4]], b: [[7.3089, 1.1576, 0.0], [8.4941, 1.3453, 0.0], [8.1791, 2.6575, 0.0], [7.0378, 2.2867, 0.0]]}
      - {kind: loft, a: [[7.0378, 2.2867, -2.4], [8.1791, 2.6575, -2.4], [7.6627, 3.9043, -2.4], [6.5934, 3.3595, -2.4]], b: [[7.0378, 2.2867, 0.0], [8.1791, 2.6575, 0.0], [7.6627, 3.9043, 0.0], [6.5934, 3.3595, 0.0]]}
      - {kind: loft, a: [[6.5934, 3.3595, -2.4], [7.6627, 3.9043, -2.4], [6.9575, 5.055, -2.4], [5.9867, 4.3496, -2.4]], b: [[6.5934, 3.3595, 0.0], [7.6627, 3.9043, 0.0], [6.9575, 5.055, 0.0], [5.9867, 4.3496, 0.0]]}
      - {kind: loft, a: [[5.9867, 4.3496, -2.4], [6.9575, 5.055, -2.4], [6.0811, 6.0811, -2.4], [5.2326, 5.2326, -2.4]], b: [[5.9867, 4.3496, 0.0], [6.9575, 5.055, 0.0], [6.0811, 6.0811, 0.0], [5.2326, 5.2326, 0.0]]}
      - {kind: loft, a: [[5.2326, 5.2326, -2.4], [6.0811, 6.0811, -2.4], [5.055, 6.9575, -2.4], [4.3496, 5.9867, -2.4]], b: [[5.2326, 5.2326, 0.0], [6.0811, 6.0811, 0.0], [5.055, 6.9575, 0.0], [4.3496, 5.9867, 0.0]]}
      - {kind: loft, a: [[4.3496, 5.9867, -2.4], [5.055, 6.9575, -2.4], [3.9043, 7.6627, -2.4], [3.3595, 6.5934, -2.4]], b: [[4.3496, 5.9867, 0.0], [5.055, 6.9575, 0.0], [3.9043, 7.6627, 0.0], [3.3595, 6.5934, 0.0]]}
      - {kind: loft, a: [[3.3595, 6.5934, -2.4], [3.9043, 7.6627, -2.4], [2.6575, 8.1791, -2.4], [2.2867, 7.0378, -2.4]], b: [[3.3595, 6.5934, 0.0], [3.9043, 7.6627, 0.0], [2.6575, 8.1791, 0.0], [2.2867, 7.0378, 0.0]]}
      - {kind: loft, a: [[2.2867, 7.0378, -2.4], [2.6575, 8.1791, -2.4], [1.3453, 8.4941, -2.4], [1.1576, 7.3089, -2.4]], b: [[2.2867, 7.0378, 0.0], [2.6575, 8.1791, 0.0], [1.3453, 8.4941, 0.0], [1.1576, 7.3089, 0.0]]}
      - {kind: loft, a: [[1.1576, 7.3089, -2.4], [1.3453, 8.4941, -2.4], [0.0, 8.6, -2.4], [0.0, 7.4, -2.4]], b: [[1.1576, 7.3089, 0.0], [1.3453, 8.4941, 0.0], [0.0, 8.6, 0.0], [0.0, 7.4, 0.0]]}
      - {kind: loft, a: [[0.0, 7.4, -2.4], [0.0, 8.6, -2.4], [-1.3453, 8.4941, -2.4], [-1.1576, 7.3089, -2.4]], b: [[0.0, 7.4, 0.0], [0.0, 8.6, 0.0], [-1.3453, 8.4941, 0.0], [-1.1576, 7.3089, 0.0]]}
      - {kind: loft, a: [[-1.1576, 7.3089, -2.4], [-1.3453, 8.4941, -2.4], [-2.6575, 8.1791, -2.4], [-2.2867, 7.0378, -2.4]], b: [[-1.1576, 7.3089, 0.0], [-1.3453, 8.4941, 0.0], [-2.6575, 8.1791, 0.0], [-2.2867, 7.0378, 0.0]]}
      - {kind: loft, a: [[-2.2867, 7.0378, -2.4], [-2.6575, 8.1791, -2.4], [-3.9043, 7.6627, -2.4], [-3.3595, 6.5934, -2.4]], b: [[-2.2867, 7.0378, 0.0], [-2.6575, 8.1791, 0.0], [-3.9043, 7.6627, 0.0], [-3.3595, 6.5934, 0.0]]}
      - {kind: loft, a: [[-3.3595, 6.5934, -2.4], [-3.9043, 7.6627, -2.4], [-5.055, 6.9575, -2.4], [-4.3496, 5.9867, -2.4]], b: [[-3.3595, 6.5934, 0.0], [-3.9043, 7.6627, 0.0], [-5.055, 6.9575, 0.0], [-4.3496, 5.9867, 0.0]]}
      - {kind: loft, a: [[-4.3496, 5.9867, -2.4], [-5.055, 6.9575, -2.4], [-6.0811, 6.0811, -2.4], [-5.2326, 5.2326, -2.4]], b: [[-4.3496, 5.9867, 0.0], [-5.055, 6.9575, 0.0], [-6.0811, 6.0811, 0.0], [-5.2326, 5.2326, 0.0]]}
      - {kind: loft, a: [[-5.2326, 5.2326, -2.4], [-6.0811, 6.0811, -2.4], [-6.9575, 5.055, -2.4], [-5.9867, 4.3496, -2.4]], b: [[-5.2326, 5.2326, 0.0], [-6.0811, 6.0811, 0.0], [-6.9575, 5.055, 0.0], [-5.9867, 4.3496, 0.0]]}
      - {kind: loft, a: [[-5.9867, 4.3496, -2.4], [-6.9575, 5.055, -2.4], [-7.6627, 3.9043, -2.4], [-6.5934, 3.3595, -2.4]], b: [[-5.9867, 4.3496, 0.0], [-6.9575, 5.055, 0.0], [-7.6627, 3.9043, 0.0], [-6.5934, 3.3595, 0.0]]}
      - {kind: loft, a: [[-6.5934, 3.3595, -2.4], [-7.6627, 3.9043, -2.4], [-8.1791, 2.6575, -2.4], [-7.0378, 2.2867, -2.4]], b: [[-6.5934, 3.3595, 0.0], [-7.6627, 3.9043, 0.0], [-8.1791, 2.6575, 0.0], [-7.0378, 2.2867, 0.0]]}
      - {kind: loft, a: [[-7.0378, 2.2867, -2.4], [-8.1791, 2.6575, -2.4], [-8.4941, 1.3453, -2.4], [-7.3089, 1.1576, -2.4]], b: [[-7.0378, 2.2867, 0.0], [-8.1791, 2.6575, 0.0], [-8.4941, 1.3453, 0.0], [-7.3089, 1.1576, 0.0]]}
      - {kind: loft, a: [[-7.3089, 1.1576, -2.4], [-8.4941, 1.3453, -2.4], [-8.6, 0.0, -2.4], [-7.4, 0.0, -2.4]], b: [[-7.3089, 1.1576, 0.0], [-8.4941, 1.3453, 0.0], [-8.6, 0.0, 0.0], [-7.4, 0.0, 0.0]]}
      - {kind: loft, a: [[-7.4, 0.0, -2.4], [-8.6, 0.0, -2.4], [-8.4941, -1.3453, -2.4], [-7.3089, -1.1576, -2.4]], b: [[-7.4, 0.0, 0.0], [-8.6, 0.0, 0.0], [-8.4941, -1.3453, 0.0], [-7.3089, -1.1576, 0.0]]}
      - {kind: loft, a: [[-7.3089, -1.1576, -2.4], [-8.4941, -1.3453, -2.4], [-8.1791, -2.6575, -2.4], [-7.0378, -2.2867, -2.4]], b: [[-7.3089, -1.1576, 0.0], [-8.4941, -1.3453, 0.0], [-8.1791, -2.6575, 0.0], [-7.0378, -2.2867, 0.0]]}
      - {kind: loft, a: [[-7.0378, -2.2867, -2.4], [-8.1791, -2.6575, -2.4], [-7.6627, -3.9043, -2.4], [-6.5934, -3.3595, -2.4]], b: [[-7.0378, -2.2867, 0.0], [-8.1791, -2.6575, 0.0], [-7.6627, -3.9043, 0.0], [-6.5934, -3.3595, 0.0]]}
      - {kind: loft, a: [[-6.5934, -3.3595, -2.4], [-7.6627, -3.9043, -2.4], [-6.9575, -5.055, -2.4], [-5.9867, -4.3496, -2.4]], b: [[-6.5934, -3.3595, 0.0], [-7.6627, -3.9043, 0.0], [-6.9575, -5.055, 0.0], [-5.9867, -4.3496, 0.0]]}
      - {kind: loft, a: [[-5.9867, -4.3496, -2.4], [-6.9575, -5.055, -2.4], [-6.0811, -6.0811, -2.4], [-5.2326, -5.2326, -2.4]], b: [[-5.9867, -4.3496, 0.0], [-6.9575, -5.055, 0.0], [-6.0811, -6.0811, 0.0], [-5.2326, -5.2326, 0.0]]}
      - {kind: loft, a: [[-5.2326, -5.2326, -2.4], [-6.0811, -6.0811, -2.4], [-5.055, -6.9575, -2.4], [-4.3496, -5.9867, -2.4]], b: [[-5.2326, -5.2326, 0.0], [-6.0811, -6.0811, 0.0], [-5.055, -6.9575, 0.0], [-4.3496, -5.9867, 0.0]]}
      - {kind: loft, a: [[-4.3496, -5.9867, -2.4], [-5.055, -6.9575, -2.4], [-3.9043, -7.6627, -2.4], [-3.3595, -6.5934, -2.4]], b: [[-4.3496, -5.9867, 0.0], [-5.055, -6.9575, 0.0], [-3.9043, -7.6627, 0.0], [-3.3595, -6.5934, 0.0]]}
      - {kind: loft, a: [[-3.3595, -6.5934, -2.4], [-3.9043, -7.6627, -2.4], [-2.6575, -8.1791, -2.4], [-2.2867, -7.0378, -2.4]], b: [[-3.3595, -6.5934, 0.0], [-3.9043, -7.6627, 0.0], [-2.6575, -8.1791, 0.0], [-2.2867, -7.0378, 0.0]]}
      - {kind: loft, a: [[-2.2867, -7.0378, -2.4], [-2.6575, -8.1791, -2.4], [-1.3453, -8.4941, -2.4], [-1.1576, -7.3089, -2.4]], b: [[-2.2867, -7.0378, 0.0], [-2.6575, -8.1791, 0.0], [-1.3453, -8.4941, 0.0], [-1.1576, -7.3089, 0.0]]}
      - {kind: loft, a: [[-1.1576, -7.3089, -2.4], [-1.3453, -8.4941, -2.4], [-0.0, -8.6, -2.4], [-0.0, -7.4, -2.4]], b: [[-1.1576, -7.3089, 0.0], [-1.3453, -8.4941, 0.0], [-0.0, -8.6, 0.0], [-0.0, -7.4, 0.0]]}
      - {kind: loft, a: [[-0.0, -7.4, -2.4], [-0.0, -8.6, -2.4], [1.3453, -8.4941, -2.4], [1.1576, -7.3089, -2.4]], b: [[-0.0, -7.4, 0.0], [-0.0, -8.6, 0.0], [1.3453, -8.4941, 0.0], [1.1576, -7.3089, 0.0]]}
      - {kind: loft, a: [[1.1576, -7.3089, -2.4], [1.3453, -8.4941, -2.4], [2.6575, -8.1791, -2.4], [2.2867, -7.0378, -2.4]], b: [[1.1576, -7.3089, 0.0], [1.3453, -8.4941, 0.0], [2.6575, -8.1791, 0.0], [2.2867, -7.0378, 0.0]]}
      - {kind: loft, a: [[2.2867, -7.0378, -2.4], [2.6575, -8.1791, -2.4], [3.9043, -7.6627, -2.4], [3.3595, -6.5934, -2.4]], b: [[2.2867, -7.0378, 0.0], [2.6575, -8.1791, 0.0], [3.9043, -7.6627, 0.0], [3.3595, -6.5934, 0.0]]}
      - {kind: loft, a: [[3.3595, -6.5934, -2.4], [3.9043, -7.6627, -2.4], [5.055, -6.9575, -2.4], [4.3496, -5.9867, -2.4]], b: [[3.3595, -6.5934, 0.0], [3.9043, -7.6627, 0.0], [5.055, -6.9575, 0.0], [4.3496, -5.9867, 0.0]]}
      - {kind: loft, a: [[4.3496, -5.9867, -2.4], [5.055, -6.9575, -2.4], [6.0811, -6.0811, -2.4], [5.2326, -5.2326, -2.4]], b: [[4.3496, -5.9867, 0.0], [5.055, -6.9575, 0.0], [6.0811, -6.0811, 0.0], [5.2326, -5.2326, 0.0]]}
      - {kind: loft, a: [[5.2326, -5.2326, -2.4], [6.0811, -6.0811, -2.4], [6.9575, -5.055, -2.4], [5.9867, -4.3496, -2.4]], b: [[5.2326, -5.2326, 0.0], [6.0811, -6.0811, 0.0], [6.9575, -5.055, 0.0], [5.9867, -4.3496, 0.0]]}
      - {kind: loft, a: [[5.9867, -4.3496, -2.4], [6.9575, -5.055, -2.4], [7.6627, -3.9043, -2.4], [6.5934, -3.3595, -2.4]], b: [[5.9867, -4.3496, 0.0], [6.9575, -5.055, 0.0], [7.6627, -3.9043, 0.0], [6.5934, -3.3595, 0.0]]}
      - {kind: loft, a: [[6.5934, -3.3595, -2.4], [7.6627, -3.9043, -2.4], [8.1791, -2.6575, -2.4], [7.0378, -2.2867, -2.4]], b: [[6.5934, -3.3595, 0.0], [7.6627, -3.9043, 0.0], [8.1791, -2.6575, 0.0], [7.0378, -2.2867, 0.0]]}
      - {kind: loft, a: [[7.0378, -2.2867, -2.4], [8.1791, -2.6575, -2.4], [8.4941, -1.3453, -2.4], [7.3089, -1.1576, -2.4]], b: [[7.0378, -2.2867, 0.0], [8.1791, -2.6575, 0.0], [8.4941, -1.3453, 0.0], [7.3089, -1.1576, 0.0]]}
      - {kind: loft, a: [[7.3089, -1.1576, -2.4], [8.4941, -1.3453, -2.4], [8.6, -0.0, -2.4], [7.4, -0.0, -2.4]], b: [[7.3089, -1.1576, 0.0], [8.4941, -1.3453, 0.0], [8.6, -0.0, 0.0], [7.4, -0.0, 0.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [7.45, 0.0, -2.4], [7.3583, 1.1654, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [7.45, 0.0, -2.0], [7.3583, 1.1654, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [7.3583, 1.1654, -2.4], [7.0854, 2.3022, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [7.3583, 1.1654, -2.0], [7.0854, 2.3022, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [7.0854, 2.3022, -2.4], [6.638, 3.3822, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [7.0854, 2.3022, -2.0], [6.638, 3.3822, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [6.638, 3.3822, -2.4], [6.0272, 4.379, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [6.638, 3.3822, -2.0], [6.0272, 4.379, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [6.0272, 4.379, -2.4], [5.2679, 5.2679, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [6.0272, 4.379, -2.0], [5.2679, 5.2679, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [5.2679, 5.2679, -2.4], [4.379, 6.0272, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [5.2679, 5.2679, -2.0], [4.379, 6.0272, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [4.379, 6.0272, -2.4], [3.3822, 6.638, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [4.379, 6.0272, -2.0], [3.3822, 6.638, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [3.3822, 6.638, -2.4], [2.3022, 7.0854, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [3.3822, 6.638, -2.0], [2.3022, 7.0854, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [2.3022, 7.0854, -2.4], [1.1654, 7.3583, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [2.3022, 7.0854, -2.0], [1.1654, 7.3583, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [1.1654, 7.3583, -2.4], [0.0, 7.45, -2.4], [0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [1.1654, 7.3583, -2.0], [0.0, 7.45, -2.0], [0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[0.0, 0.0, -2.4], [0.0, 7.45, -2.4], [-1.1654, 7.3583, -2.4], [-0.0, 0.0, -2.4]], b: [[0.0, 0.0, -2.0], [0.0, 7.45, -2.0], [-1.1654, 7.3583, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-1.1654, 7.3583, -2.4], [-2.3022, 7.0854, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-1.1654, 7.3583, -2.0], [-2.3022, 7.0854, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-2.3022, 7.0854, -2.4], [-3.3822, 6.638, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-2.3022, 7.0854, -2.0], [-3.3822, 6.638, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-3.3822, 6.638, -2.4], [-4.379, 6.0272, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-3.3822, 6.638, -2.0], [-4.379, 6.0272, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-4.379, 6.0272, -2.4], [-5.2679, 5.2679, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-4.379, 6.0272, -2.0], [-5.2679, 5.2679, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-5.2679, 5.2679, -2.4], [-6.0272, 4.379, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-5.2679, 5.2679, -2.0], [-6.0272, 4.379, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-6.0272, 4.379, -2.4], [-6.638, 3.3822, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-6.0272, 4.379, -2.0], [-6.638, 3.3822, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-6.638, 3.3822, -2.4], [-7.0854, 2.3022, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-6.638, 3.3822, -2.0], [-7.0854, 2.3022, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-7.0854, 2.3022, -2.4], [-7.3583, 1.1654, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-7.0854, 2.3022, -2.0], [-7.3583, 1.1654, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-7.3583, 1.1654, -2.4], [-7.45, 0.0, -2.4], [-0.0, 0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-7.3583, 1.1654, -2.0], [-7.45, 0.0, -2.0], [-0.0, 0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, 0.0, -2.4], [-7.45, 0.0, -2.4], [-7.3583, -1.1654, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, 0.0, -2.0], [-7.45, 0.0, -2.0], [-7.3583, -1.1654, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-7.3583, -1.1654, -2.4], [-7.0854, -2.3022, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-7.3583, -1.1654, -2.0], [-7.0854, -2.3022, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-7.0854, -2.3022, -2.4], [-6.638, -3.3822, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-7.0854, -2.3022, -2.0], [-6.638, -3.3822, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-6.638, -3.3822, -2.4], [-6.0272, -4.379, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-6.638, -3.3822, -2.0], [-6.0272, -4.379, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-6.0272, -4.379, -2.4], [-5.2679, -5.2679, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-6.0272, -4.379, -2.0], [-5.2679, -5.2679, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-5.2679, -5.2679, -2.4], [-4.379, -6.0272, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-5.2679, -5.2679, -2.0], [-4.379, -6.0272, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-4.379, -6.0272, -2.4], [-3.3822, -6.638, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-4.379, -6.0272, -2.0], [-3.3822, -6.638, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-3.3822, -6.638, -2.4], [-2.3022, -7.0854, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-3.3822, -6.638, -2.0], [-2.3022, -7.0854, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-2.3022, -7.0854, -2.4], [-1.1654, -7.3583, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-2.3022, -7.0854, -2.0], [-1.1654, -7.3583, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-1.1654, -7.3583, -2.4], [-0.0, -7.45, -2.4], [-0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-1.1654, -7.3583, -2.0], [-0.0, -7.45, -2.0], [-0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[-0.0, -0.0, -2.4], [-0.0, -7.45, -2.4], [1.1654, -7.3583, -2.4], [0.0, -0.0, -2.4]], b: [[-0.0, -0.0, -2.0], [-0.0, -7.45, -2.0], [1.1654, -7.3583, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [1.1654, -7.3583, -2.4], [2.3022, -7.0854, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [1.1654, -7.3583, -2.0], [2.3022, -7.0854, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [2.3022, -7.0854, -2.4], [3.3822, -6.638, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [2.3022, -7.0854, -2.0], [3.3822, -6.638, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [3.3822, -6.638, -2.4], [4.379, -6.0272, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [3.3822, -6.638, -2.0], [4.379, -6.0272, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [4.379, -6.0272, -2.4], [5.2679, -5.2679, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [4.379, -6.0272, -2.0], [5.2679, -5.2679, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [5.2679, -5.2679, -2.4], [6.0272, -4.379, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [5.2679, -5.2679, -2.0], [6.0272, -4.379, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [6.0272, -4.379, -2.4], [6.638, -3.3822, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [6.0272, -4.379, -2.0], [6.638, -3.3822, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [6.638, -3.3822, -2.4], [7.0854, -2.3022, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [6.638, -3.3822, -2.0], [7.0854, -2.3022, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [7.0854, -2.3022, -2.4], [7.3583, -1.1654, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [7.0854, -2.3022, -2.0], [7.3583, -1.1654, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: loft, a: [[0.0, -0.0, -2.4], [7.3583, -1.1654, -2.4], [7.45, -0.0, -2.4], [0.0, -0.0, -2.4]], b: [[0.0, -0.0, -2.0], [7.3583, -1.1654, -2.0], [7.45, -0.0, -2.0], [0.0, -0.0, -2.0]]}
      - {kind: rod, from: [0, 0, -2.4], to: [0, 0, 1.2], radius: 1.1, color: "#cfc6b4"}   # the boss
  - id: arm
    shape: part
    pos: [0, 0, 3.4]
    color: "#b8ad97"
    pieces:
      - {kind: rod, from: [-1.4, 0, 3.4], to: [12.5, 0, 3.4], radius: 0.3}   # the arm
      - {kind: rod, from: [12.5, 0, 2.6], to: [12.5, 0, 4.2], radius: 0.8, color: "#8f8a80"}   # its knob
      - {kind: rod, from: [0, 0, 2.9], to: [0, 0, 3.9], radius: 1.3}   # its eye on the shaft
      - {kind: rod, from: [7.1, 0, 3.4], to: [8.9, 0, 3.4], radius: 0.55, color: "#8f8a80"}   # the pawl's pin, along the arm
  - id: pawl
    shape: part
    pos: [8.0, 0, 3.4]
    mount: arm
    friction: 0.1
    color: "#6b5a44"
    pieces:
      - {kind: loft, a: [[7.5, -0.2867, 3.2956], [7.5, -1.7888, 1.1504], [7.5, -1.5021, 0.9496], [7.5, -0.0, 3.0948]], b: [[8.5, -0.2867, 3.2956], [8.5, -1.7888, 1.1504], [8.5, -1.5021, 0.9496], [8.5, -0.0, 3.0948]], collide: 2}   # the pawl
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: rod, from: [0, 0, -10], to: [0, 0, 4.6], radius: 0.5, color: "#8f8a80"}   # the shaft (the wheel and the arm turn on it)
      - {kind: rod, from: [0, 0, -10], to: [0, 0, -3.2], radius: 1.4}   # its pillar
      - {kind: loft, a: [[-6, -6, -11.2], [6, -6, -11.2], [6, 6, -11.2], [-6, 6, -11.2]], b: [[-6, -6, -10], [6, -6, -10], [6, 6, -10], [-6, 6, -10]], color: "#b9b09c"}
joints:
  - {id: j_arm, type: hinge, body: arm, axis: [0, 0, 1], damping: 0.001}   # the one driven joint; +: counter-clockwise seen from above
  - {id: j_pawl, type: hinge, body: pawl, axis: [1, 0, 0], damping: 0.0005, range: [-0.8, 0.2]}   # -: its end lifted (ahead and up)
  - {id: j_wheel, type: hinge, body: wheel, axis: [0, 0, 1], damping: 0.002, frictionloss: 0.05}
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_arm, kind: velocity, rpm: 0, swing: {amplitude: 0.2356, hz: 0.5}, kv: 20, max_torque: 30}
checks:
  - {type: advance, joint: j_wheel, beat: j_arm, expect: -0.15708, tol: 0.06, settle_s: 2.5, window_s: 9}   # one tooth (2 pi / 20) clockwise each to-and-fro, half of it a beat
  - {type: monotonic, joint: j_wheel, direction: -1, max_back: 0.05, settle_s: 1, window_s: 10.5}
  - {type: clicks, joint: j_pawl, lift: 0.1, min: 4, settle_s: 1.0, window_s: 10}   # the pawl rides over a tooth each return
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [0, 0, -2.0], position: [20.0, -44.0, 24.0], fov: 34}
display:
  output: j_wheel
  labels: {j_arm: "Top arm (driver)", j_wheel: "Crown-ratchet", j_pawl: "Pawl"}
  proof: {label: "Pawl out of contact", sub: "the arm swings, the wheel stands"}

