# No. 284 (Brown 1868): "Represents a feeding apparatus for the bed of a sawing machine. By the revolution of the crank at the lower part of the figure, alternate motion is communicated to the horizontal arm of the bell crank lever whose fulcrum is at a, near the top left-hand corner of the figure. By this means motion is communicated to the catch attached to the vertical arm of the lever, and the said catch communicates motion to the ratchet-wheel, upon the shaft of which is a toothed pinion, working in the rack attached to the side of the carriage. The feed is varied by a screw in the bell-crank lever."
#
# Model (cm, gravity on): the crank (the one driven joint, 30 turns a minute, throw 2.43) works the horizontal arm (12 cm) of the bell-crank lever on its fulcrum a by a connecting-rod pinned to both.
# The vertical arm (8 cm) carries the catch on a pin; sprung and lying on the top of the 40-tooth ratchet-wheel, it pushes the wheel round as the rod pulls the arm down and slides back over the teeth
# as it rises: 3.24 cm of travel, so two teeth a turn of the crank, always the same way (the wheel is held by its bearing friction between strokes). A 16-tooth pinion on the wheel's shaft (pitch radius 6.4)
# works the rack on the carriage above it, which feeds to the left, 2.01 cm a turn. The screw that varies the feed (it moves the catch's pin along the vertical arm) is not modelled. Generator: opencode-runs/batch12/gen284.py.
number: 284
slug: saw-bed-feed
name: A feeding apparatus for the bed of a sawing machine
brown: "Represents a feeding apparatus for the bed of a sawing machine. By the revolution of the crank at the lower part of the figure, alternate motion is communicated to the horizontal arm of the bell crank lever whose fulcrum is at a, near the top left-hand corner of the figure. By this means motion is communicated to the catch attached to the vertical arm of the lever, and the said catch communicates motion to the ratchet-wheel, upon the shaft of which is a toothed pinion, working in the rack attached to the side of the carriage. The feed is varied by a screw in the bell-crank lever."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: PGS
  multiccd: false
  duration_s: 13.0
  floor: false
bodies:
  - id: wheel
    shape: part
    pos: [0, 0, 0]
    friction: 0.1
    color: "#d9cfb6"
    pieces:
      - {kind: disc, center: [0, 0], radius: 8.2, inner: 7.0, y: [-0.5, 0.5]}   # the ratchet-wheel's rim
      - {kind: disc, center: [0, 0], radius: 2.0, inner: 0.6, y: [-0.6, 0.6]}   # its hub
      - {kind: poly, points: [[1.5836, 1.0498], [5.3873, 4.7767], [4.7767, 5.3873], [1.0498, 1.5836]], y: [-0.4, 0.4], collide: 0}
      - {kind: poly, points: [[-1.0498, 1.5836], [-4.7767, 5.3873], [-5.3873, 4.7767], [-1.5836, 1.0498]], y: [-0.4, 0.4], collide: 0}
      - {kind: poly, points: [[-1.5836, -1.0498], [-5.3873, -4.7767], [-4.7767, -5.3873], [-1.0498, -1.5836]], y: [-0.4, 0.4], collide: 0}
      - {kind: poly, points: [[1.0498, -1.5836], [4.7767, -5.3873], [5.3873, -4.7767], [1.5836, -1.0498]], y: [-0.4, 0.4], collide: 0}
      - {kind: poly, points: [[1.2671, 8.0003], [1.4079, 8.8892], [0.0, 8.1]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[0.0, 8.1], [0.0, 9.0], [-1.2671, 8.0003]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-1.2671, 8.0003], [-1.4079, 8.8892], [-2.503, 7.7036]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-2.503, 7.7036], [-2.7812, 8.5595], [-3.6773, 7.2172]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-3.6773, 7.2172], [-4.0859, 8.0191], [-4.7611, 6.553]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-4.7611, 6.553], [-5.2901, 7.2812], [-5.7276, 5.7276]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-5.7276, 5.7276], [-6.364, 6.364], [-6.553, 4.7611]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-6.553, 4.7611], [-7.2812, 5.2901], [-7.2172, 3.6773]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-7.2172, 3.6773], [-8.0191, 4.0859], [-7.7036, 2.503]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-7.7036, 2.503], [-8.5595, 2.7812], [-8.0003, 1.2671]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-8.0003, 1.2671], [-8.8892, 1.4079], [-8.1, 0.0]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-8.1, 0.0], [-9.0, 0.0], [-8.0003, -1.2671]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-8.0003, -1.2671], [-8.8892, -1.4079], [-7.7036, -2.503]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-7.7036, -2.503], [-8.5595, -2.7812], [-7.2172, -3.6773]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-7.2172, -3.6773], [-8.0191, -4.0859], [-6.553, -4.7611]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-6.553, -4.7611], [-7.2812, -5.2901], [-5.7276, -5.7276]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-5.7276, -5.7276], [-6.364, -6.364], [-4.7611, -6.553]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-4.7611, -6.553], [-5.2901, -7.2812], [-3.6773, -7.2172]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-3.6773, -7.2172], [-4.0859, -8.0191], [-2.503, -7.7036]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-2.503, -7.7036], [-2.7812, -8.5595], [-1.2671, -8.0003]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-1.2671, -8.0003], [-1.4079, -8.8892], [-0.0, -8.1]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[-0.0, -8.1], [-0.0, -9.0], [1.2671, -8.0003]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[1.2671, -8.0003], [1.4079, -8.8892], [2.503, -7.7036]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[2.503, -7.7036], [2.7812, -8.5595], [3.6773, -7.2172]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[3.6773, -7.2172], [4.0859, -8.0191], [4.7611, -6.553]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[4.7611, -6.553], [5.2901, -7.2812], [5.7276, -5.7276]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[5.7276, -5.7276], [6.364, -6.364], [6.553, -4.7611]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[6.553, -4.7611], [7.2812, -5.2901], [7.2172, -3.6773]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[7.2172, -3.6773], [8.0191, -4.0859], [7.7036, -2.503]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[7.7036, -2.503], [8.5595, -2.7812], [8.0003, -1.2671]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[8.0003, -1.2671], [8.8892, -1.4079], [8.1, -0.0]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[8.1, -0.0], [9.0, -0.0], [8.0003, 1.2671]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[8.0003, 1.2671], [8.8892, 1.4079], [7.7036, 2.503]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[7.7036, 2.503], [8.5595, 2.7812], [7.2172, 3.6773]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[7.2172, 3.6773], [8.0191, 4.0859], [6.553, 4.7611]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[6.553, 4.7611], [7.2812, 5.2901], [5.7276, 5.7276]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[5.7276, 5.7276], [6.364, 6.364], [4.7611, 6.553]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[4.7611, 6.553], [5.2901, 7.2812], [3.6773, 7.2172]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[3.6773, 7.2172], [4.0859, 8.0191], [2.503, 7.7036]], y: [-0.5, 0.5], collide: 1}
      - {kind: poly, points: [[2.503, 7.7036], [2.7812, 8.5595], [1.2671, 8.0003]], y: [-0.5, 0.5], collide: 1}
      - {kind: disc, center: [0, 0], radius: 5.55, inner: 0.6, y: [1.0, 2.2], collide: 0, color: "#b8ad97"}   # the pinion, behind
      - {kind: poly, points: [[0.8441, 5.6], [-0.8441, 5.6], [-0.3491, 6.96], [0.3491, 6.96]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-1.3632, 5.4967], [-2.9229, 4.8507], [-2.986, 6.2966], [-2.341, 6.5638]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-3.3629, 4.5567], [-4.5567, 3.3629], [-5.1683, 4.6746], [-4.6746, 5.1683]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-4.8507, 2.9229], [-5.4967, 1.3632], [-6.5638, 2.341], [-6.2966, 2.986]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-5.6, 0.8441], [-5.6, -0.8441], [-6.96, -0.3491], [-6.96, 0.3491]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-5.4967, -1.3632], [-4.8507, -2.9229], [-6.2966, -2.986], [-6.5638, -2.341]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-4.5567, -3.3629], [-3.3629, -4.5567], [-4.6746, -5.1683], [-5.1683, -4.6746]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-2.9229, -4.8507], [-1.3632, -5.4967], [-2.341, -6.5638], [-2.986, -6.2966]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[-0.8441, -5.6], [0.8441, -5.6], [0.3491, -6.96], [-0.3491, -6.96]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[1.3632, -5.4967], [2.9229, -4.8507], [2.986, -6.2966], [2.341, -6.5638]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[3.3629, -4.5567], [4.5567, -3.3629], [5.1683, -4.6746], [4.6746, -5.1683]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[4.8507, -2.9229], [5.4967, -1.3632], [6.5638, -2.341], [6.2966, -2.986]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[5.6, -0.8441], [5.6, 0.8441], [6.96, 0.3491], [6.96, -0.3491]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[5.4967, 1.3632], [4.8507, 2.9229], [6.2966, 2.986], [6.5638, 2.341]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[4.5567, 3.3629], [3.3629, 4.5567], [4.6746, 5.1683], [5.1683, 4.6746]], y: [1.0, 2.2], collide: 1}
      - {kind: poly, points: [[2.9229, 4.8507], [1.3632, 5.4967], [2.341, 6.5638], [2.986, 6.2966]], y: [1.0, 2.2], collide: 1}
  - id: carriage
    shape: part
    pos: [0, 0, 7.2]
    mass: 1.0
    friction: 0.1
    color: "#b9a88a"
    pieces:
      - {kind: poly, points: [[-18.0, 7.2], [30.0, 7.2], [30.0, 9.2], [-18.0, 9.2]], y: [1.0, 2.6], collide: 0}   # the rack's bar, on the side of the carriage
      - {kind: poly, points: [[-18.0, 9.2], [30.0, 9.2], [30.0, 11.6], [-18.0, 11.6]], y: [1.0, 4.0], collide: 0, color: "#cbbd9f"}   # the carriage
      - {kind: poly, points: [[-19.6685, 7.2], [-18.0306, 7.2], [-18.4674, 6.0], [-19.2318, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-17.1552, 7.2], [-15.5173, 7.2], [-15.9541, 6.0], [-16.7185, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-14.642, 7.2], [-13.004, 7.2], [-13.4408, 6.0], [-14.2052, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-12.1287, 7.2], [-10.4908, 7.2], [-10.9275, 6.0], [-11.6919, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-9.6154, 7.2], [-7.9775, 7.2], [-8.4143, 6.0], [-9.1787, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-7.1021, 7.2], [-5.4642, 7.2], [-5.901, 6.0], [-6.6654, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-4.5889, 7.2], [-2.9509, 7.2], [-3.3877, 6.0], [-4.1521, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[-2.0756, 7.2], [-0.4377, 7.2], [-0.8744, 6.0], [-1.6388, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[0.4377, 7.2], [2.0756, 7.2], [1.6388, 6.0], [0.8744, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[2.9509, 7.2], [4.5889, 7.2], [4.1521, 6.0], [3.3877, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[5.4642, 7.2], [7.1021, 7.2], [6.6654, 6.0], [5.901, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[7.9775, 7.2], [9.6154, 7.2], [9.1787, 6.0], [8.4143, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[10.4908, 7.2], [12.1287, 7.2], [11.6919, 6.0], [10.9275, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[13.004, 7.2], [14.642, 7.2], [14.2052, 6.0], [13.4408, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[15.5173, 7.2], [17.1552, 7.2], [16.7185, 6.0], [15.9541, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[18.0306, 7.2], [19.6685, 7.2], [19.2318, 6.0], [18.4674, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[20.5439, 7.2], [22.1818, 7.2], [21.745, 6.0], [20.9806, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[23.0571, 7.2], [24.6951, 7.2], [24.2583, 6.0], [23.4939, 6.0]], y: [1.0, 2.2], collide: 2}
      - {kind: poly, points: [[25.5704, 7.2], [27.2083, 7.2], [26.7716, 6.0], [26.0072, 6.0]], y: [1.0, 2.2], collide: 2}
  - id: lever
    shape: part
    pos: [8.0401, 0, 20.3622]
    mass: 0.3
    color: "#b8ad97"
    pieces:
      - {kind: poly, points: [[7.9388, 20.8518], [19.6902, 23.2818], [19.8927, 22.3025], [8.1413, 19.8725]], y: [-1.8, -1.0], collide: 0}   # the horizontal arm
      - {kind: poly, points: [[8.7256, 20.5039], [10.4671, 12.0821], [9.0961, 11.7986], [7.3546, 20.2204]], y: [-1.8, -1.0], collide: 0}   # the vertical arm (its slot and feed screw drawn)
      - {kind: poly, points: [[8.5886, 18.9439], [9.7429, 13.362], [9.2532, 13.2607], [8.099, 18.8426]], y: [-1.85, -1.75], collide: 0, color: "#6f6a60"}   # the feed screw
      - {kind: disc, center: [8.0401, 20.3622], radius: 1.0, inner: 0.35, y: [-1.8, -1.0]}
      - {kind: disc, center: [19.7914, 22.7922], radius: 0.8, inner: 0.3, y: [-1.8, -1.0]}
      - {kind: rod, from: [9.6601, -1.0, 12.5279], to: [9.6601, 0.4, 12.5279], radius: 0.25, collide: 0, color: "#8f8a80"}   # the catch's pin
  - id: catch
    shape: part
    pos: [9.6601, 0, 12.5279]
    mount: lever
    mass: 0.05
    friction: 0.4
    color: "#6b5a44"
    pieces:
      - {kind: disc, center: [9.6601, 12.5279], radius: 0.6, inner: 0.25, y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[9.8405, 12.3549], [6.731, 9.1119], [6.3701, 9.458], [9.4796, 12.7009]], y: [-0.25, 0.25], collide: 0}
      - {kind: poly, points: [[6.5928, 9.0386], [1.979, 8.2464], [1.8944, 8.7392], [6.5082, 9.5314]], y: [-0.25, 0.25], collide: 0}
      - {kind: rod, from: [3.2179, 0, 8.7128], to: [1.641, 0, 8.442], radius: 0.15, capsule: true, collide: 2}   # its working nose
  - id: crank
    shape: part
    pos: [20.0401, 0, -13.0]
    mass: 0.5
    color: "#a39d90"
    pieces:
      - {kind: rod, from: [20.0401, 0.2, -13.0], to: [20.0401, -0.6, -13.0], radius: 1.2, collide: 0}   # the crank's boss
      - {kind: poly, points: [[19.3401, -13.0], [19.3401, -10.57], [20.7401, -10.57], [20.7401, -13.0]], y: [-0.6, 0.0], collide: 0}   # its arm
      - {kind: disc, center: [20.0401, -10.57], radius: 0.7, y: [-0.6, 0.0]}
      - {kind: rod, from: [20.0401, -1.4, -10.57], to: [20.0401, 0.0, -10.57], radius: 0.25, collide: 0, color: "#8f8a80"}   # the crank-pin
  - id: rod
    shape: part
    pos: [20.0401, 0, -10.57]
    mount: crank
    mass: 0.2
    color: "#8f8a80"
    pieces:
      - {kind: poly, points: [[19.7901, -10.5719], [19.5415, 22.7903], [20.0414, 22.794], [20.2901, -10.5681]], y: [-1.0, -0.6], collide: 0}   # the connecting-rod
      - {kind: disc, center: [20.0401, -10.57], radius: 0.7, inner: 0.25, y: [-1.0, -0.6]}
      - {kind: disc, center: [19.7914, 22.7922], radius: 0.7, inner: 0.25, y: [-1.0, -0.6]}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: rod, from: [0, -0.8, 0], to: [0, 4.6, 0], radius: 0.6, color: "#8f8a80"}   # the wheel's shaft
      - {kind: poly, points: [[-1.4, -17.0], [1.4, -17.0], [1.0, 0], [-1.0, 0]], y: [4.6, 5.4]}   # its standard
      - {kind: poly, points: [[4.6401, -17.0], [6.6401, -17.0], [6.6401, 23.3622], [4.6401, 23.3622]], y: [4.6, 5.6]}   # the upright of the frame, behind
      - {kind: poly, points: [[4.6401, 19.1622], [9.2401, 19.1622], [9.2401, 21.5622], [4.6401, 21.5622]], y: [-0.8, 4.6]}   # the fulcrum's bracket
      - {kind: rod, from: [8.0401, -2.2, 20.3622], to: [8.0401, -0.8, 20.3622], radius: 0.35, color: "#8f8a80"}   # the fulcrum a
      - {kind: poly, points: [[18.8401, -17.0], [21.2401, -17.0], [20.8401, -13.0], [19.2401, -13.0]], y: [0.2, 1.0]}   # the crank's standard
      - {kind: rod, from: [20.0401, 1.0, -13.0], to: [20.0401, -0.6, -13.0], radius: 0.4, color: "#8f8a80"}
      - {kind: poly, points: [[-30.0, 6.7], [28.0, 6.7], [28.0, 11.6], [-30.0, 11.6]], y: [4.2, 4.6], color: "#d8cfbd"}   # the saw-bed's side, behind the carriage
      - {kind: poly, points: [[-12, -18.0], [24.0401, -18.0], [24.0401, -17.0], [-12, -17.0]], y: [-3, 5.6], color: "#b9b09c"}
joints:
  - {id: j_k, type: hinge, body: crank, axis: [0, -1, 0], damping: 0.0005}   # the one driven joint
  - {id: j_r, type: hinge, body: rod, axis: [0, -1, 0], damping: 0.0005}   # the rod on the crank-pin
  - {id: j_b, type: hinge, body: lever, axis: [0, -1, 0], damping: 0.0005}   # the bell-crank on a; + : against the clock (the catch drawn back)
  - {id: j_c, type: hinge, body: catch, axis: [0, -1, 0], damping: 0.0002, range: [-0.6, 0.3], stiffness: 0.01, springref: 0.25}   # sprung onto the teeth
  - {id: j_w, type: hinge, body: wheel, axis: [0, -1, 0], damping: 0.002, frictionloss: 0.03}   # + : against the clock
  - {id: j_x, type: slide, body: carriage, axis: [1, 0, 0], damping: 0.5}   # + : to the right
pins:
  - {id: pin_e, a: rod, b: lever, at: [19.7914, 0, 22.7922]}
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_k, kind: velocity, rpm: 30, kv: 2.0, max_torque: 20}
checks:
  - {type: ratio, out: j_w, in: j_k, expect: 0.05, tol: 0.002, settle_s: 2.0, window_s: 8.0}   # two teeth a turn of the crank
  - {type: monotonic, joint: j_w, direction: 1, max_back: 0.02, settle_s: 0.5, window_s: 11}   # a ratchet: the wheel never goes back
  - {type: clicks, joint: j_c, lift: 0.04, min: 4, settle_s: 1.0, window_s: 10.0}   # the catch rides over the teeth every up-stroke
  - {type: follow, out: j_x, in: j_w, expect: -0.064, tol: 0.0032, min_r2: 0.995, settle_s: 1.0, window_s: 10.0}   # the pinion works the rack
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [4.0, 0, -7.7], position: [4.0, -130.0, -7.7], fov: 34}
display:
  output: j_x
  labels: {j_k: "Crank (driver)", j_r: "Connecting-rod", j_b: "Bell-crank lever", j_c: "Catch", j_w: "Ratchet-wheel and pinion", j_x: "Carriage"}
  proof: {label: "Catch out of contact", sub: "the lever rocks but the wheel and carriage stand"}

