# No. 123 (Brown 1868): "Intended as a substitute for the crank. Reciprocating rectilinear motion of the double rack gives a continuous rotary motion to the center gear. The teeth on the rack act upon those of the two semi-circular toothed sectors, and the spur-gears attached to the sectors operate upon the center gear. The two stops on the rack shown by dotted lines are caught by the curved piece on the center gear, and lead the toothed sectors alternately into gear with the double rack."
#
# Model (cm), Brown's elevation laid flat (gravity off: a plan of the machine on its bench): the double rack, an upright bar with teeth on both edges (straight-flanked
# 20-degree teeth, module 0.8), is the one driven part, slid up and down by the hand. Two semicircular sectors (16 tooth spaces, pitch radius 6.4), S1 on the left and
# S2 on the right, each carry a 12-tooth spur (pitch radius 4.800000000000001) behind it, geared with the centre gear C (12 teeth), which turns behind the rack between them (its shaft
# through a slot in the bar). On the up stroke the rack's left teeth turn S1, on the down stroke its right teeth turn S2, both the same way round, and their spurs turn C
# the same way on each stroke: half a turn a stroke; meanwhile the other sector's blank half faces the rack. Near each end of the stroke the sectors' teeth run out and
# the two stops on the rack (Brown's dotted lines: a pair of jaws each, flared mouths, here in front of the bar) catch the pin on C's arm (Brown's curved piece), carry
# C over the reversal (45 degrees either side) and lead the other sector's teeth into gear with the rack. Only 3 teeth of each sector come into mesh in a stroke, so
# only those are cut. The hand feels the machine (driver feet, timed by C's own position, as Nos. 159 and 374): it pushes the rack up through the half-turn of C that goes
# with the up stroke and down through the other half, so it never fights the stops at the reversal; C works against a light viscous load.
# Generator: opencode-runs/batch16/gen123c.py.
number: 123
slug: double-rack-two-sectors-centre-gear
name: A double rack and two sectors turning a centre gear continuously
brown: "Intended as a substitute for the crank. Reciprocating rectilinear motion of the double rack gives a continuous rotary motion to the center gear. The teeth on the rack act upon those of the two semi-circular toothed sectors, and the spur-gears attached to the sectors operate upon the center gear. The two stops on the rack shown by dotted lines are caught by the curved piece on the center gear, and lead the toothed sectors alternately into gear with the double rack."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: PGS
  multiccd: true
  duration_s: 12.0
  gravity: 0.0
  floor: false
bodies:
  - id: sector_1
    shape: part
    pos: [-9.6, 0, 0.0]
    density: 7800.0
    friction: 0.1
    color: "#d9cfb6"
    pieces:
      - {kind: poly, points: [[-4.7493, -2.9229], [-4.1033, -1.3632], [-3.0362, -2.341], [-3.3034, -2.986]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[-4.0, -0.8441], [-4.0, 0.8441], [-2.64, 0.3491], [-2.64, -0.3491]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[-4.1033, 1.3632], [-4.7493, 2.9229], [-3.3034, 2.986], [-3.0362, 2.341]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[-9.6, 0.0], [-9.6, 5.55], [-12.375, 4.8064]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-9.6, 0.0], [-12.375, 4.8064], [-14.4064, 2.775]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-9.6, 0.0], [-14.4064, 2.775], [-15.15, 0.0]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-9.6, 0.0], [-15.15, 0.0], [-14.4064, -2.775]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-9.6, 0.0], [-14.4064, -2.775], [-12.375, -4.8064]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-9.6, 0.0], [-12.375, -4.8064], [-9.6, -5.55]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[-5.6, -0.7687], [-5.6, 0.7687], [-4.24, 0.2737], [-4.24, -0.2737]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-5.7515, 1.3343], [-6.5202, 2.6657], [-5.095, 2.917], [-4.8213, 2.443]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-6.9343, 3.0798], [-8.2657, 3.8485], [-7.157, 4.7787], [-6.683, 4.505]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-8.8313, 4.0], [-10.3687, 4.0], [-9.8737, 5.36], [-9.3263, 5.36]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-10.9343, 3.8485], [-12.2657, 3.0798], [-12.517, 4.505], [-12.043, 4.7787]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-12.6798, 2.6657], [-13.4485, 1.3343], [-14.3787, 2.443], [-14.105, 2.917]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-13.6, 0.7687], [-13.6, -0.7687], [-14.96, -0.2737], [-14.96, 0.2737]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-13.4485, -1.3343], [-12.6798, -2.6657], [-14.105, -2.917], [-14.3787, -2.443]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-12.2657, -3.0798], [-10.9343, -3.8485], [-12.043, -4.7787], [-12.517, -4.505]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-10.3687, -4.0], [-8.8313, -4.0], [-9.3263, -5.36], [-9.8737, -5.36]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-8.2657, -3.8485], [-6.9343, -3.0798], [-6.683, -4.505], [-7.157, -4.7787]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[-6.5202, -2.6657], [-5.7515, -1.3343], [-4.8213, -2.443], [-5.095, -2.917]], y: [1.0, 2.4], collide: 1}
      - {kind: disc, center: [-9.6, 0.0], radius: 3.95, inner: 0.6, y: [1.0, 2.4]}
  - id: sector_2
    shape: part
    pos: [9.6, 0, 0.0]
    density: 7800.0
    friction: 0.1
    color: "#d9cfb6"
    pieces:
      - {kind: poly, points: [[14.4507, -2.9229], [15.0967, -1.3632], [16.1638, -2.341], [15.8966, -2.986]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[15.2, -0.8441], [15.2, 0.8441], [16.56, 0.3491], [16.56, -0.3491]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[15.0967, 1.3632], [14.4507, 2.9229], [15.8966, 2.986], [16.1638, 2.341]], y: [-0.8, 0.8], collide: 1}
      - {kind: poly, points: [[9.6, 0.0], [9.6, 5.55], [6.825, 4.8064]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[9.6, 0.0], [6.825, 4.8064], [4.7936, 2.775]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[9.6, 0.0], [4.7936, 2.775], [4.05, 0.0]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[9.6, 0.0], [4.05, 0.0], [4.7936, -2.775]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[9.6, 0.0], [4.7936, -2.775], [6.825, -4.8064]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[9.6, 0.0], [6.825, -4.8064], [9.6, -5.55]], y: [-0.8, 0.8], collide: 0, density: 1970.0}
      - {kind: poly, points: [[5.6, 0.7687], [5.6, -0.7687], [4.24, -0.2737], [4.24, 0.2737]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[5.7515, -1.3343], [6.5202, -2.6657], [5.095, -2.917], [4.8213, -2.443]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[6.9343, -3.0798], [8.2657, -3.8485], [7.157, -4.7787], [6.683, -4.505]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[8.8313, -4.0], [10.3687, -4.0], [9.8737, -5.36], [9.3263, -5.36]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[10.9343, -3.8485], [12.2657, -3.0798], [12.517, -4.505], [12.043, -4.7787]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[12.6798, -2.6657], [13.4485, -1.3343], [14.3787, -2.443], [14.105, -2.917]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[13.6, -0.7687], [13.6, 0.7687], [14.96, 0.2737], [14.96, -0.2737]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[13.4485, 1.3343], [12.6798, 2.6657], [14.105, 2.917], [14.3787, 2.443]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[12.2657, 3.0798], [10.9343, 3.8485], [12.043, 4.7787], [12.517, 4.505]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[10.3687, 4.0], [8.8313, 4.0], [9.3263, 5.36], [9.8737, 5.36]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[8.2657, 3.8485], [6.9343, 3.0798], [6.683, 4.505], [7.157, 4.7787]], y: [1.0, 2.4], collide: 1}
      - {kind: poly, points: [[6.5202, 2.6657], [5.7515, 1.3343], [4.8213, 2.443], [5.095, 2.917]], y: [1.0, 2.4], collide: 1}
      - {kind: disc, center: [9.6, 0.0], radius: 3.95, inner: 0.6, y: [1.0, 2.4]}
  - id: centre_c
    shape: part
    pos: [0, 0, 0]
    density: 7800.0
    friction: 0.1
    color: "#cdbf9f"
    pieces:
      - {kind: poly, points: [[-4.0627, -0.2928], [-3.6647, -1.7778], [-5.1065, -1.6516], [-5.2482, -1.1229]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[-3.372, -2.2849], [-2.2849, -3.372], [-3.5966, -3.9836], [-3.9836, -3.5966]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[-1.7778, -3.6647], [-0.2928, -4.0627], [-1.1229, -5.2482], [-1.6516, -5.1065]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[0.2928, -4.0627], [1.7778, -3.6647], [1.6516, -5.1065], [1.1229, -5.2482]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[2.2849, -3.372], [3.372, -2.2849], [3.9836, -3.5966], [3.5966, -3.9836]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[3.6647, -1.7778], [4.0627, -0.2928], [5.2482, -1.1229], [5.1065, -1.6516]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[4.0627, 0.2928], [3.6647, 1.7778], [5.1065, 1.6516], [5.2482, 1.1229]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[3.372, 2.2849], [2.2849, 3.372], [3.5966, 3.9836], [3.9836, 3.5966]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[1.7778, 3.6647], [0.2928, 4.0627], [1.1229, 5.2482], [1.6516, 5.1065]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[-0.2928, 4.0627], [-1.7778, 3.6647], [-1.6516, 5.1065], [-1.1229, 5.2482]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[-2.2849, 3.372], [-3.372, 2.2849], [-3.9836, 3.5966], [-3.5966, 3.9836]], y: [1.0, 2.4], collide: 2}
      - {kind: poly, points: [[-3.6647, 1.7778], [-4.0627, 0.2928], [-5.2482, 1.1229], [-5.1065, 1.6516]], y: [1.0, 2.4], collide: 2}
      - {kind: disc, center: [0.0, 0.0], radius: 3.95, inner: 0.6, y: [1.0, 2.4]}
      - {kind: poly, points: [[0.0, -0.5], [0.0, 0.5], [-9.051, 0.3], [-9.051, -0.3]], y: [-1.15, -0.95], collide: 0, density: 300.0, color: "#a89c84"}   # C's arm (the curved piece)
      - {kind: disc, center: [-9.051, 0.0], radius: 0.4, y: [-2.4, -1.2], collide: 1, density: 300.0, color: "#7d7262"}   # its pin
      - {kind: rod, from: [0, -1.2, 0], to: [0, 1.0, 0], radius: 0.55, collide: 0, color: "#8f8a80"}   # C's shaft through the slot
  - id: rack
    shape: part
    pos: [0, 0, 0]
    density: 2700
    friction: 0.1
    color: "#b8ad97"
    pieces:
      - {kind: poly, points: [[0.8, -27.0], [0.8, 27.0], [2.4, 27.0], [2.4, -27.0]], y: [-0.8, 0.8], collide: 0}
      - {kind: poly, points: [[-0.8, -27.0], [-0.8, 27.0], [-2.4, 27.0], [-2.4, -27.0]], y: [-0.8, 0.8], collide: 0}
      - {kind: poly, points: [[0.8, -8.6775], [0.8, -27.0], [-0.8, -27.0], [-0.8, -8.6775]], y: [-0.8, 0.8], collide: 0}
      - {kind: poly, points: [[0.8, 8.6775], [0.8, 27.0], [-0.8, 27.0], [-0.8, 8.6775]], y: [-0.8, 0.8], collide: 0}
      - {kind: poly, points: [[6.4, -2.2235], [6.4, -1.8235], [-6.4, -1.8235], [-6.4, -2.2235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, -1.8235], [6.4, -2.2235], [7.6, -2.8235], [7.6, -2.4235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[-6.4, -1.8235], [-6.4, -2.2235], [-7.6, -2.8235], [-7.6, -2.4235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, -0.9235], [6.4, -0.5235], [-6.4, -0.5235], [-6.4, -0.9235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, -0.9235], [6.4, -0.5235], [7.6, 0.0765], [7.6, -0.3235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[-6.4, -0.9235], [-6.4, -0.5235], [-7.6, 0.0765], [-7.6, -0.3235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[2.4, -1.8735], [2.4, -0.8735], [-2.4, -0.8735], [-2.4, -1.8735]], y: [-1.0, -0.8], collide: 0, color: "#8a7f6c"}   # its foot on the bar
      - {kind: poly, points: [[6.4, 0.5235], [6.4, 0.9235], [-6.4, 0.9235], [-6.4, 0.5235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, 0.9235], [6.4, 0.5235], [7.6, -0.0765], [7.6, 0.3235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[-6.4, 0.9235], [-6.4, 0.5235], [-7.6, -0.0765], [-7.6, 0.3235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, 1.8235], [6.4, 2.2235], [-6.4, 2.2235], [-6.4, 1.8235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[6.4, 1.8235], [6.4, 2.2235], [7.6, 2.8235], [7.6, 2.4235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[-6.4, 1.8235], [-6.4, 2.2235], [-7.6, 2.8235], [-7.6, 2.4235]], y: [-2.6, -1.0], collide: 2, color: "#8a7f6c"}
      - {kind: poly, points: [[2.4, 0.8735], [2.4, 1.8735], [-2.4, 1.8735], [-2.4, 0.8735]], y: [-1.0, -0.8], collide: 0, color: "#8a7f6c"}   # its foot on the bar
      - {kind: poly, points: [[-2.4, -9.6154], [-2.4, -7.9775], [-3.6, -8.4143], [-3.6, -9.1787]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, -7.1021], [-2.4, -5.4642], [-3.6, -5.901], [-3.6, -6.6654]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, -4.5889], [-2.4, -2.9509], [-3.6, -3.3877], [-3.6, -4.1521]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, -2.0756], [-2.4, -0.4377], [-3.6, -0.8744], [-3.6, -1.6388]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, 0.4377], [-2.4, 2.0756], [-3.6, 1.6388], [-3.6, 0.8744]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, 2.9509], [-2.4, 4.5889], [-3.6, 4.1521], [-3.6, 3.3877]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, 5.4642], [-2.4, 7.1021], [-3.6, 6.6654], [-3.6, 5.901]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[-2.4, 7.9775], [-2.4, 9.6154], [-3.6, 9.1787], [-3.6, 8.4143]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, -9.6154], [2.4, -7.9775], [3.6, -8.4143], [3.6, -9.1787]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, -7.1021], [2.4, -5.4642], [3.6, -5.901], [3.6, -6.6654]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, -4.5889], [2.4, -2.9509], [3.6, -3.3877], [3.6, -4.1521]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, -2.0756], [2.4, -0.4377], [3.6, -0.8744], [3.6, -1.6388]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, 0.4377], [2.4, 2.0756], [3.6, 1.6388], [3.6, 0.8744]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, 2.9509], [2.4, 4.5889], [3.6, 4.1521], [3.6, 3.3877]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, 5.4642], [2.4, 7.1021], [3.6, 6.6654], [3.6, 5.901]], y: [-0.8, 0.8], collide: 2}
      - {kind: poly, points: [[2.4, 7.9775], [2.4, 9.6154], [3.6, 9.1787], [3.6, 8.4143]], y: [-0.8, 0.8], collide: 2}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: rod, from: [0, 1.0, 0], to: [0, 4.4, 0], radius: 0.6, collide: 0, color: "#8f8a80"}   # the shafts, into their standard behind
      - {kind: rod, from: [-9.6, -0.9, 0.0], to: [-9.6, 4.4, 0.0], radius: 0.6, collide: 0, color: "#8f8a80"}
      - {kind: rod, from: [9.6, -0.9, 0.0], to: [9.6, 4.4, 0.0], radius: 0.6, collide: 0, color: "#8f8a80"}
      - {kind: poly, points: [[-11.6, -2.0], [11.6, -2.0], [11.6, 2.0], [-11.6, 2.0]], y: [4.4, 5.2], collide: 0}   # the standard's cross-piece, behind
      - {kind: poly, points: [[-1.4, -38.6775], [1.4, -38.6775], [1.4, -2.0], [-1.4, -2.0]], y: [4.4, 5.2], collide: 0}   # its post
      - {kind: poly, points: [[-30, -39.8775], [30, -39.8775], [30, -38.6775], [-30, -38.6775]], y: [-3, 5.6], color: "#b9b09c", collide: 0}   # the bench
      - {kind: poly, points: [[-2.5, -19.6], [-4.2, -19.6], [-4.2, -17.6], [-2.5, -17.6]], y: [-1.0, 1.0], collide: 0, color: "#a39a86"}   # the guide's cheek
      - {kind: poly, points: [[-2.5, 17.6], [-4.2, 17.6], [-4.2, 19.6], [-2.5, 19.6]], y: [-1.0, 1.0], collide: 0, color: "#a39a86"}   # the guide's cheek
      - {kind: poly, points: [[2.5, -19.6], [4.2, -19.6], [4.2, -17.6], [2.5, -17.6]], y: [-1.0, 1.0], collide: 0, color: "#a39a86"}   # the guide's cheek
      - {kind: poly, points: [[2.5, 17.6], [4.2, 17.6], [4.2, 19.6], [2.5, 19.6]], y: [-1.0, 1.0], collide: 0, color: "#a39a86"}   # the guide's cheek

joints:
  - {id: j_r, type: slide, body: rack, axis: [0, 0, 1], damping: 0.05}   # the one driven joint; + : up
  - {id: j_s1, type: hinge, body: sector_1, axis: [0, 1, 0], damping: 0.005}
  - {id: j_s2, type: hinge, body: sector_2, axis: [0, 1, 0], damping: 0.005}
  - {id: j_c, type: hinge, body: centre_c, axis: [0, 1, 0], damping: 0.005}
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_r, kind: feet, feet: {joints: [j_r, j_r], sign: [1, -1], force: 5.0, timed: {joint: j_c, shape: sin, gain: 1.0, offset: -1.5708}}, max_torque: 300}
checks:
  - {type: advance, joint: j_c, beat: j_r, expect: 3.1416, tol: 0.05, settle_s: 3.0, window_s: 8.5}   # C goes half a turn to each stroke of the rack
  - {type: monotonic, joint: j_c, direction: 1, max_back: 0.05, settle_s: 0.0, window_s: 11.5}   # from rest C always turns the one way
  - {type: turning, joint: j_c, direction: 1, min_mean: 4.0, min_fraction: 0.9, settle_s: 3.0, window_s: 8.5}   # and keeps turning, through every reversal
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [0, 0, -17.0], position: [0, -150.0, -17.0], fov: 42}
display:
  output: j_c
  labels: {j_r: "Double rack (driver)", j_s1: "Sector S1", j_s2: "Sector S2", j_c: "Centre gear C"}
  proof: {label: "Sectors' teeth out of contact", sub: "the hand works the rack but the sectors and the centre gear stand"}

