# No. 201 (Brown 1868): "A continual rotation of the pinion (obtained through the irregular shaped gear at the left) gives a variable vibrating movement to the horizontal arm, and a variable reciprocating movement to the rod, A."
#
# Model (cm): G, at the left, is an irregular toothed gear of 20 teeth on a fixed shaft at the origin, the one driven part (8 rpm, counter-clockwise):
# its pitch curve r = 5.828 (1 + 0.15 cos phi + 0.16 cos 2 phi), two unequal lobes (No. 196's wheel), straight-flanked 20-degree teeth at equal arc pitch
# 1.885, each square to the curve. The pinion, 10 teeth (module 0.6, pitch radius 3), turns on a pin at the left end of a horizontal arm 24 long pivoted
# on the standard to the right; it rests on G by its own and the arm's weight. So the pinion is turned continually by G (2 turns to G's one, at a varying
# speed: -2.543 to -1.621 of G's in twelfths of a turn, from the rolling kinematics), and as G's radius under it changes the arm rises and falls
# irregularly (0.0 to 6.8 deg). The rod A stands in a guide under the arm; a pin on the arm 9.6 from the pivot works in a
# horizontal slot in A's head, so A rises and falls with the arm (-1.14 to -0.00 cm). Generator: opencode-runs/batch11/gen201.py.
number: 201
slug: irregular-gear-arm-rod
name: An irregular gear, a pinion on a vibrating arm, and a rod
brown: "A continual rotation of the pinion (obtained through the irregular shaped gear at the left) gives a variable vibrating movement to the horizontal arm, and a variable reciprocating movement to the rod, A."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: CG
  multiccd: true
  duration_s: 16.0
bodies:
  - id: gear
    shape: part
    pos: [0, 0, 0]
    density: 7800
    friction: 0.1
    color: "#c9b88f"
    pieces:
      - {kind: poly, points: [[0, 0], [-0.01, 6.8379], [-0.5573, 6.7985]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-0.5573, 6.7985], [-1.1032, 6.6817]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-1.1032, 6.6817], [-1.6174, 6.4947]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-1.6174, 6.4947], [-2.1089, 6.2362]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.1089, 6.2362], [-2.5517, 5.9225]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.5517, 5.9225], [-2.9549, 5.5506]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.9549, 5.5506], [-3.2994, 5.1434]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.2994, 5.1434], [-3.5948, 4.6962]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.5948, 4.6962], [-3.8338, 4.2262]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.8338, 4.2262], [-4.0149, 3.752]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.0149, 3.752], [-4.148, 3.2648]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.148, 3.2648], [-4.233, 2.789]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.233, 2.789], [-4.2787, 2.3125]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.2787, 2.3125], [-4.2896, 1.8558]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.2896, 1.8558], [-4.2726, 1.4041]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.2726, 1.4041], [-4.2342, 0.9736]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.2342, 0.9736], [-4.1783, 0.5477]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.1783, 0.5477], [-4.11, 0.1327]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.11, 0.1327], [-4.0337, -0.2663]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-4.0337, -0.2663], [-3.9484, -0.6652]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.9484, -0.6652], [-3.8571, -1.0511]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.8571, -1.0511], [-3.7553, -1.4389]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.7553, -1.4389], [-3.6438, -1.815]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.6438, -1.815], [-3.5152, -2.1928]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.5152, -2.1928], [-3.3701, -2.5577]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.3701, -2.5577], [-3.1992, -2.9212]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.1992, -2.9212], [-3.0012, -3.2733]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-3.0012, -3.2733], [-2.7777, -3.6039]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.7777, -3.6039], [-2.5189, -3.9201]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.5189, -3.9201], [-2.2336, -4.205]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-2.2336, -4.205], [-1.9126, -4.463]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-1.9126, -4.463], [-1.5698, -4.6794]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-1.5698, -4.6794], [-1.1965, -4.8567]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-1.1965, -4.8567], [-0.811, -4.9843]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-0.811, -4.9843], [-0.4052, -5.0636]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [-0.4052, -5.0636], [0.0074, -5.0896]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [0.0074, -5.0896], [0.4126, -5.0626]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [0.4126, -5.0626], [0.8182, -4.9824]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [0.8182, -4.9824], [1.2034, -4.854]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [1.2034, -4.854], [1.5762, -4.6758]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [1.5762, -4.6758], [1.9186, -4.4587]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [1.9186, -4.4587], [2.2391, -4.2]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.2391, -4.2], [2.5238, -3.9147]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.5238, -3.9147], [2.7821, -3.5981]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.7821, -3.5981], [3.0088, -3.2609]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.0088, -3.2609], [3.2025, -2.9148]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.2025, -2.9148], [3.373, -2.5512]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.373, -2.5512], [3.5177, -2.1861]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.5177, -2.1861], [3.646, -1.8082]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.646, -1.8082], [3.7572, -1.432]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.7572, -1.432], [3.8589, -1.0442]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.8589, -1.0442], [3.95, -0.6581]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.95, -0.6581], [4.0352, -0.2591]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.0352, -0.2591], [4.1126, 0.1473]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.1126, 0.1473], [4.1795, 0.5552]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.1795, 0.5552], [4.2351, 0.9813]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.2351, 0.9813], [4.2731, 1.412]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.2731, 1.412], [4.2897, 1.864]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.2897, 1.864], [4.2782, 2.3209]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.2782, 2.3209], [4.2318, 2.7976]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.2318, 2.7976], [4.1461, 3.2735]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.1461, 3.2735], [4.012, 3.7607]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [4.012, 3.7607], [3.8262, 4.2433]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.8262, 4.2433], [3.59, 4.7044]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.59, 4.7044], [3.2936, 5.1511]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [3.2936, 5.1511], [2.9482, 5.5577]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.9482, 5.5577], [2.544, 5.9286]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.544, 5.9286], [2.1005, 6.2414]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [2.1005, 6.2414], [1.6083, 6.4987]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [1.6083, 6.4987], [1.0936, 6.6844]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [1.0936, 6.6844], [0.5474, 6.7999]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0, 0], [0.5474, 6.7999], [-0.01, 6.8379]], y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0.6275, 6.9195], [-0.6479, 6.9162], [-0.1846, 8.1992], [0.1578, 8.2]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-0.9771, 6.8488], [-2.1547, 6.3589], [-2.2163, 7.7215], [-1.9003, 7.853]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-2.444, 6.164], [-3.3575, 5.274], [-3.9179, 6.5176], [-3.6727, 6.7565]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-3.568, 4.972], [-4.1187, 3.8216], [-5.0734, 4.7959], [-4.9255, 5.1047]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-4.2244, 3.4402], [-4.3977, 2.1766], [-5.6042, 2.813], [-5.5577, 3.1521]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-4.3898, 1.7242], [-4.2639, 0.455], [-5.5855, 0.7928], [-5.6193, 1.1334]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-4.1678, -0.0535], [-3.8883, -1.2979], [-5.2411, -1.1236], [-5.3161, -0.7895]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-3.7622, -1.7886], [-3.2956, -2.9756], [-4.6592, -3.0103], [-4.7845, -2.6917]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-3.1141, -3.3284], [-2.3049, -4.3142], [-3.5917, -4.7669], [-3.8089, -4.5023]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-2.058, -4.5266], [-0.9183, -5.0991], [-1.9106, -6.035], [-2.2165, -5.8813]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[-0.6377, -5.1696], [0.6377, -5.1696], [0.1712, -6.4514], [-0.1712, -6.4514]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[0.9257, -5.097], [2.0641, -4.5219], [2.2256, -5.8764], [1.92, -6.0307]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[2.3105, -4.3092], [3.118, -3.322], [3.8148, -4.4946], [3.598, -4.7596]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[3.2989, -2.9691], [3.7642, -1.7817], [4.7874, -2.6837], [4.6625, -3.0024]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[3.8901, -1.2908], [4.1691, -0.0463], [5.3178, -0.7819], [5.2429, -1.116]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[4.2652, 0.4628], [4.3901, 1.7321], [5.62, 1.1423], [5.5865, 0.8016]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[4.3974, 2.1855], [4.2223, 3.4488], [5.556, 3.1627], [5.603, 2.8236]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[4.1157, 3.8308], [3.5627, 4.98], [4.92, 5.1154], [5.0685, 4.8069]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[3.3514, 5.282], [2.4359, 6.1699], [3.6632, 6.7652], [3.9089, 6.5268]], y: [-0.6, 0.6], collide: 1}
      - {kind: poly, points: [[2.1459, 6.3642], [0.9672, 6.8513], [1.8878, 7.8577], [2.2042, 7.727]], y: [-0.6, 0.6], collide: 1}
      - {kind: disc, center: [0, 0], radius: 0.9, y: [-0.9, 0.9], collide: 0, color: "#8f8a80"}   # its hub
  - id: arm
    shape: part
    pos: [24.0, 0, 10.6341]
    density: 2700
    color: "#8f8a80"
    pieces:
      - {kind: poly, points: [[0.0, 10.1341], [24.0, 10.1341], [24.0, 11.1341], [0.0, 11.1341]], y: [-1.6, -1.0], collide: 0}   # the arm, in front of the pinion
      - {kind: disc, center: [0.0, 10.6341], radius: 0.9, y: [-1.6, -1.0], collide: 0}   # its eye on the pinion's pin
      - {kind: disc, center: [24.0, 10.6341], radius: 1.1, y: [-1.6, -1.0], collide: 0}   # its eye on the pivot
      - {kind: disc, center: [0.0, 10.6341], radius: 0.45, y: [-1.6, 1.2], collide: 0, color: "#6f6a60"}   # the pinion's pin
      - {kind: disc, center: [14.4, 10.6341], radius: 0.45, y: [-2.8, -1.0], collide: 1, color: "#6f6a60"}   # the pin in A's head
  - id: pinion
    shape: part
    mount: arm
    pos: [0.0, 0, 10.6341]
    density: 7800
    friction: 0.1
    color: "#b9ac90"
    pieces:
      - {kind: disc, center: [0.0, 10.6341], radius: 2.2337, y: [-0.3, 0.3], collide: 0}
      - {kind: poly, points: [[0.0992, 8.2651], [1.3122, 8.6593], [1.2646, 7.2961], [0.939, 7.1903]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[1.4727, 8.7759], [2.2224, 9.8077], [2.9852, 8.6769], [2.7839, 8.3999]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[2.2837, 9.9964], [2.2837, 11.2718], [3.5655, 10.8053], [3.5655, 10.463]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[2.2224, 11.4606], [1.4727, 12.4924], [2.7839, 12.8684], [2.9852, 12.5914]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[1.3122, 12.609], [0.0992, 13.0031], [0.939, 14.078], [1.2646, 13.9722]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[-0.0992, 13.0031], [-1.3122, 12.609], [-1.2646, 13.9722], [-0.939, 14.078]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[-1.4727, 12.4924], [-2.2224, 11.4606], [-2.9852, 12.5914], [-2.7839, 12.8684]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[-2.2837, 11.2718], [-2.2837, 9.9964], [-3.5655, 10.463], [-3.5655, 10.8053]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[-2.2224, 9.8077], [-1.4727, 8.7759], [-2.7839, 8.3999], [-2.9852, 8.6769]], y: [-0.6, 0.6], collide: 2}
      - {kind: poly, points: [[-1.3122, 8.6593], [-0.0992, 8.2651], [-0.939, 7.1903], [-1.2646, 7.2961]], y: [-0.6, 0.6], collide: 2}
  - id: rod
    shape: part
    pos: [14.4, 0, 10.6341]
    density: 2700
    color: "#a39a86"
    pieces:
      - {kind: poly, points: [[12.2, 11.1241], [16.6, 11.1241], [16.6, 11.5241], [12.2, 11.5241]], y: [-2.8, -2.0], collide: 2}   # the head: the slot's upper bar
      - {kind: poly, points: [[12.2, 9.7441], [16.6, 9.7441], [16.6, 10.1441], [12.2, 10.1441]], y: [-2.8, -2.0], collide: 2}   # and its lower
      - {kind: poly, points: [[11.8, 9.7441], [12.2, 9.7441], [12.2, 11.5241], [11.8, 11.5241]], y: [-2.8, -2.0], collide: 0}
      - {kind: poly, points: [[16.6, 9.7441], [17.0, 9.7441], [17.0, 11.5241], [16.6, 11.5241]], y: [-2.8, -2.0], collide: 0}
      - {kind: poly, points: [[13.95, -6.8659], [14.85, -6.8659], [14.85, 9.7441], [13.95, 9.7441]], y: [-2.8, -2.0], collide: 0}   # the rod
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    density: 7800
    color: "#cfc6b4"
    pieces:
      - {kind: disc, center: [0, 0], radius: 0.5, y: [0.9, 3.0], collide: 0, color: "#6f6a60"}   # G's shaft
      - {kind: disc, center: [24.0, 10.6341], radius: 0.5, y: [-1.0, 3.0], collide: 0, color: "#6f6a60"}   # the arm's pivot pin
      - {kind: poly, points: [[22.4, -9.5], [25.6, -9.5], [25.0, 10.6341], [23.0, 10.6341]], y: [1.2, 3.0], collide: 0}   # its standard
      - {kind: poly, points: [[-1.6, -9.5], [1.6, -9.5], [1.0, 0], [-1.0, 0]], y: [1.2, 3.0], collide: 0}   # G's standard
      - {kind: poly, points: [[13.2, -1.8659], [13.9, -1.8659], [13.9, 0.1341], [13.2, 0.1341]], y: [-3.2, -1.6], collide: 0, color: "#9c9282"}   # A's guide
      - {kind: poly, points: [[14.9, -1.8659], [15.6, -1.8659], [15.6, 0.1341], [14.9, 0.1341]], y: [-3.2, -1.6], collide: 0, color: "#9c9282"}
      - {kind: poly, points: [[-12, -11.0], [30.0, -11.0], [30.0, -9.5], [-12, -9.5]], y: [-3.4, 3.0], collide: 0, color: "#9c9282"}   # the bench
joints:
  - {id: j_gear, type: hinge, body: gear, axis: [0, -1, 0], damping: 0.001}   # the one driven joint; +: counter-clockwise
  - {id: j_arm, type: hinge, body: arm, axis: [0, -1, 0], damping: 0.05, range: [-0.6, 0.6]}   # +: counter-clockwise about the pivot (the pinion's end falls)
  - {id: j_pinion, type: hinge, body: pinion, axis: [0, -1, 0], damping: 0.001}
  - {id: j_rod, type: slide, body: rod, axis: [0, 0, 1], damping: 0.05}   # +: up
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_gear, kind: velocity, rpm: 8.0, kv: 3, max_torque: 10}
checks:
  - {type: ratio, out: j_pinion, in: j_gear, expect: -2.0000, tol: 0.0600, settle_s: 1.0, window_s: 7.500}   # a whole turn of G: the pinion 2 turns the other way
  - {type: ratio_range, out: j_pinion, in: j_gear, min: -2.924, max: -1.377, min_swing: 0.461, settle_s: 1.0, window_s: 7.500, slices: 12}   # its speed varies through the turn
  - {type: position, joint: j_arm, min: -0.030, max: 0.149, settle_s: 0.3, window_s: 15.5}
  - {type: amplitude, joint: j_arm, min: 0.0445, max: 0.0742, settle_s: 0.3, window_s: 15.5}
  - {type: position, joint: j_rod, min: -1.437, max: 0.300, settle_s: 0.3, window_s: 15.5}
  - {type: amplitude, joint: j_rod, min: 0.00426, max: 0.00711, settle_s: 0.3, window_s: 15.5}   # metres (the test reads slides in SI)
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [10.0, 0, 1.3171], position: [10.0, -95, 3.3171], fov: 34}
display:
  output: j_rod
  labels: {j_gear: "Irregular gear (driver)", j_pinion: "Pinion", j_arm: "Horizontal arm", j_rod: "Rod A"}
  proof: {label: "Teeth out of contact", sub: "the gear turns alone: the pinion, the arm and the rod stand"}

