# No. 210 (Brown 1868): "By turning the shaft carrying the curved slotted arm, a rectilinear motion of variable velocity is given to the vertical bar."
#
# Model (cm, after the plate; drawing plane x-z): the shaft at the origin carries the curved slotted arm, its slot a smooth curve through the plate's points,
# from low on the left up and over the top to the right. The vertical bar slides in two guides on the frame, its line 1.6 to the right of the shaft's centre
# and behind the arm; a pin on it (radius 0.45, clearance 0.04) works in the slot. Only the shaft is driven: turned to and fro by hand, +-0.72 rad at 0.3 Hz,
# about a position -0.70 rad from the drawing (a full turn would carry the slot clear of the bar). Where the slot crosses the bar's line moves along the slot, and the
# slot's slant to the bar changes as it goes, so the bar rises and falls 5.34 cm at a rate from 1.02 to 5.75 cm per radian of the shaft
# (kinematics). Gravity is on; the bar's weight rests the pin on the slot's lower side. Generator: opencode-runs/batch11/gen210.py.
number: 210
slug: curved-slotted-arm-vertical-bar
name: A curved slotted arm giving a vertical bar a variable motion
brown: "By turning the shaft carrying the curved slotted arm, a rectilinear motion of variable velocity is given to the vertical bar."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: CG
  multiccd: true
  duration_s: 10.0
bodies:
  - id: arm
    shape: part
    pos: [0, 0, 0]
    density: 2700
    friction: 0.1
    color: "#c9b88f"
    pieces:
      - {kind: poly, points: [[-2.3586, 2.584], [-2.2571, 2.8308], [-3.0112, 3.1265], [-3.1035, 2.9022]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.4574, 2.1991], [-0.7125, 1.8809], [-0.5906, 2.1773], [-1.3447, 2.473]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-2.2571, 2.8308], [-2.1605, 3.0875], [-2.922, 3.3634], [-3.0112, 3.1265]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.3447, 2.473], [-0.5906, 2.1773], [-0.4776, 2.4777], [-1.2391, 2.7536]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-2.1605, 3.0875], [-2.0669, 3.354], [-2.8333, 3.6162], [-2.922, 3.3634]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.2391, 2.7536], [-0.4776, 2.4777], [-0.3732, 2.7748], [-1.1396, 3.0369]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-2.0669, 3.354], [-1.975, 3.6282], [-2.7441, 3.8821], [-2.8333, 3.6162]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.1396, 3.0369], [-0.3732, 2.7748], [-0.2752, 3.067], [-1.0444, 3.3209]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.975, 3.6282], [-1.8834, 3.9077], [-2.6535, 4.1589], [-2.7441, 3.8821]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.0444, 3.3209], [-0.2752, 3.067], [-0.1817, 3.3524], [-0.9518, 3.6037]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.8834, 3.9077], [-1.7908, 4.1904], [-2.56, 4.4444], [-2.6535, 4.1589]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.9518, 3.6037], [-0.1817, 3.3524], [-0.0911, 3.6292], [-0.8602, 3.8832]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.7908, 4.1904], [-1.6956, 4.4744], [-2.462, 4.7366], [-2.56, 4.4444]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.8602, 3.8832], [-0.0911, 3.6292], [-0.0019, 3.8952], [-0.7683, 4.1573]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.6956, 4.4744], [-1.5961, 4.7577], [-2.3576, 5.0336], [-2.462, 4.7366]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.7683, 4.1573], [-0.0019, 3.8952], [0.0869, 4.1479], [-0.6747, 4.4238]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.5961, 4.7577], [-1.4905, 5.0383], [-2.2445, 5.3341], [-2.3576, 5.0336]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.6747, 4.4238], [0.0869, 4.1479], [0.176, 4.3848], [-0.5781, 4.6805]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.4905, 5.0383], [-1.3768, 5.3145], [-2.1202, 5.6363], [-2.2445, 5.3341]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.5781, 4.6805], [0.176, 4.3848], [0.2658, 4.6032], [-0.4775, 4.9251]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.3768, 5.3145], [-1.2531, 5.5843], [-1.9813, 5.9391], [-2.1202, 5.6363]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.4775, 4.9251], [0.2658, 4.6032], [0.3561, 4.8004], [-0.3721, 5.1551]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.2531, 5.5843], [-1.1168, 5.846], [-1.8241, 6.2407], [-1.9813, 5.9391]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.3721, 5.1551], [0.3561, 4.8004], [0.4462, 4.9737], [-0.2611, 5.3684]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-1.1168, 5.846], [-0.9654, 6.0975], [-1.6443, 6.5394], [-1.8241, 6.2407]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.2611, 5.3684], [0.4462, 4.9737], [0.5347, 5.1209], [-0.1442, 5.5628]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.9654, 6.0975], [-0.7961, 6.3364], [-1.4366, 6.8322], [-1.6443, 6.5394]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.1442, 5.5628], [0.5347, 5.1209], [0.6193, 5.2406], [-0.0212, 5.7365]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.7961, 6.3364], [-0.6064, 6.5592], [-1.1972, 7.1132], [-1.4366, 6.8322]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.0212, 5.7365], [0.6193, 5.2406], [0.6994, 5.3348], [0.1085, 5.8888]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.6064, 6.5592], [-0.4045, 6.758], [-0.951, 7.3558], [-1.1972, 7.1132]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.1085, 5.8888], [0.6994, 5.3348], [0.8034, 5.437], [0.2568, 6.0348]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.4045, 6.758], [-0.1889, 6.9418], [-0.6937, 7.5753], [-0.951, 7.3558]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.2568, 6.0348], [0.8034, 5.437], [0.9264, 5.5418], [0.4217, 6.1753]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[-0.1889, 6.9418], [0.0385, 7.1117], [-0.4264, 7.775], [-0.6937, 7.5753]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.4217, 6.1753], [0.9264, 5.5418], [1.0659, 5.6458], [0.601, 6.3092]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.0385, 7.1117], [0.276, 7.2683], [-0.1512, 7.9564], [-0.4264, 7.775]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.601, 6.3092], [1.0659, 5.6458], [1.2201, 5.7475], [0.7929, 6.4356]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.276, 7.2683], [0.5216, 7.4121], [0.13, 8.1211], [-0.1512, 7.9564]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.7929, 6.4356], [1.2201, 5.7475], [1.387, 5.8451], [0.9954, 6.5542]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.5216, 7.4121], [0.7736, 7.5435], [0.4158, 8.2702], [0.13, 8.1211]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.9954, 6.5542], [1.387, 5.8451], [1.5644, 5.9376], [1.2066, 6.6643]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[0.7736, 7.5435], [1.0303, 7.6629], [0.7046, 8.4045], [0.4158, 8.2702]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.2066, 6.6643], [1.5644, 5.9376], [1.75, 6.024], [1.4243, 6.7656]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.0303, 7.6629], [1.2899, 7.7705], [0.9951, 8.525], [0.7046, 8.4045]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.4243, 6.7656], [1.75, 6.024], [1.9414, 6.1033], [1.6466, 6.8577]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.2899, 7.7705], [1.5508, 7.8666], [1.2859, 8.632], [0.9951, 8.525]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.6466, 6.8577], [1.9414, 6.1033], [2.1362, 6.175], [1.8713, 6.9405]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.5508, 7.8666], [1.8113, 7.9512], [1.5758, 8.7262], [1.2859, 8.632]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.8713, 6.9405], [2.1362, 6.175], [2.3317, 6.2385], [2.0962, 7.0135]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[1.8113, 7.9512], [2.0699, 8.0245], [1.8637, 8.8078], [1.5758, 8.7262]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.0962, 7.0135], [2.3317, 6.2385], [2.5255, 6.2934], [2.3193, 7.0768]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.0699, 8.0245], [2.3248, 8.0865], [2.1483, 8.877], [1.8637, 8.8078]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.3193, 7.0768], [2.5255, 6.2934], [2.7148, 6.3395], [2.5384, 7.13]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.3248, 8.0865], [2.5747, 8.1373], [2.4289, 8.9341], [2.1483, 8.877]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.5384, 7.13], [2.7148, 6.3395], [2.8968, 6.3765], [2.7511, 7.1733]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.5747, 8.1373], [2.818, 8.1768], [2.7047, 8.9788], [2.4289, 8.9341]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.7511, 7.1733], [2.8968, 6.3765], [3.0684, 6.4044], [2.9551, 7.2064]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.818, 8.1768], [3.0545, 8.205], [2.9782, 9.0114], [2.7047, 8.9788]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[2.9551, 7.2064], [3.0684, 6.4044], [3.2233, 6.423], [3.1469, 7.2294]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.0545, 8.205], [3.3012, 8.219], [3.2872, 9.0288], [2.9782, 9.0114]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.1469, 7.2294], [3.2233, 6.423], [3.3323, 6.4292], [3.3182, 7.2391]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.3012, 8.219], [3.5461, 8.2141], [3.5912, 9.0229], [3.2872, 9.0288]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.3182, 7.2391], [3.3323, 6.4292], [3.4463, 6.4269], [3.4915, 7.2357]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.5461, 8.2141], [3.7871, 8.1925], [3.886, 8.9964], [3.5912, 9.0229]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.4915, 7.2357], [3.4463, 6.4269], [3.5687, 6.4159], [3.6675, 7.2198]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.7871, 8.1925], [4.0239, 8.156], [4.1708, 8.9525], [3.886, 8.9964]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.6675, 7.2198], [3.5687, 6.4159], [3.6991, 6.3957], [3.8461, 7.1923]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.0239, 8.156], [4.2559, 8.1066], [4.4455, 8.8941], [4.1708, 8.9525]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[3.8461, 7.1923], [3.6991, 6.3957], [3.8368, 6.3663], [4.0265, 7.1538]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.2559, 8.1066], [4.4828, 8.046], [4.71, 8.8235], [4.4455, 8.8941]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.0265, 7.1538], [3.8368, 6.3663], [3.9809, 6.3278], [4.208, 7.1053]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.4828, 8.046], [4.7045, 7.976], [4.9643, 8.7432], [4.71, 8.8235]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.208, 7.1053], [3.9809, 6.3278], [4.1302, 6.2806], [4.3901, 7.0478]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.7045, 7.976], [4.9205, 7.8982], [5.2087, 8.6552], [4.9643, 8.7432]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.3901, 7.0478], [4.1302, 6.2806], [4.2837, 6.2254], [4.5719, 6.9824]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.9205, 7.8982], [5.1307, 7.8142], [5.4432, 8.5615], [5.2087, 8.6552]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.5719, 6.9824], [4.2837, 6.2254], [4.4402, 6.1628], [4.7527, 6.9101]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.1307, 7.8142], [5.3348, 7.7254], [5.6679, 8.4637], [5.4432, 8.5615]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.7527, 6.9101], [4.4402, 6.1628], [4.5986, 6.0938], [4.9318, 6.8321]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.3348, 7.7254], [5.5324, 7.6334], [5.8828, 8.3637], [5.6679, 8.4637]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[4.9318, 6.8321], [4.5986, 6.0938], [4.7582, 6.0195], [5.1085, 6.7498]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.5324, 7.6334], [5.7232, 7.5395], [6.0875, 8.2629], [5.8828, 8.3637]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.1085, 6.7498], [4.7582, 6.0195], [4.918, 5.9408], [5.2824, 6.6642]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.7232, 7.5395], [5.9067, 7.4453], [6.2819, 8.1631], [6.0875, 8.2629]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.2824, 6.6642], [4.918, 5.9408], [5.0775, 5.8589], [5.4527, 6.5768]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.9067, 7.4453], [6.0824, 7.3521], [6.4654, 8.0658], [6.2819, 8.1631]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.4527, 6.5768], [5.0775, 5.8589], [5.236, 5.7749], [5.619, 6.4886]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.0824, 7.3521], [6.2509, 7.2609], [6.6403, 7.9711], [6.4654, 8.0658]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.619, 6.4886], [5.236, 5.7749], [5.3904, 5.6913], [5.7798, 6.4016]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.2509, 7.2609], [6.4283, 7.1591], [6.8459, 7.8532], [6.6403, 7.9711]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.7798, 6.4016], [5.3904, 5.6913], [5.5054, 5.6254], [5.923, 6.3194]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.4283, 7.1591], [6.6025, 7.0495], [7.047, 7.7267], [6.8459, 7.8532]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[5.923, 6.3194], [5.5054, 5.6254], [5.6203, 5.5531], [6.0647, 6.2302]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.6025, 7.0495], [6.7723, 6.9336], [7.2409, 7.5942], [7.047, 7.7267]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.0647, 6.2302], [5.6203, 5.5531], [5.7366, 5.4736], [6.2052, 6.1343]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.7723, 6.9336], [6.9373, 6.8122], [7.4279, 7.4567], [7.2409, 7.5942]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.2052, 6.1343], [5.7366, 5.4736], [5.8531, 5.3879], [6.3437, 6.0324]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.9373, 6.8122], [7.0974, 6.6863], [7.6081, 7.315], [7.4279, 7.4567]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.3437, 6.0324], [5.8531, 5.3879], [5.9687, 5.297], [6.4794, 5.9257]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.0974, 6.6863], [7.2521, 6.5567], [7.7814, 7.1698], [7.6081, 7.315]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.4794, 5.9257], [5.9687, 5.297], [6.0824, 5.2017], [6.6117, 5.8149]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.2521, 6.5567], [7.4011, 6.4243], [7.9478, 7.022], [7.7814, 7.1698]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.6117, 5.8149], [6.0824, 5.2017], [6.1931, 5.1033], [6.7398, 5.7011]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.4011, 6.4243], [7.5441, 6.2898], [8.1071, 6.8721], [7.9478, 7.022]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.7398, 5.7011], [6.1931, 5.1033], [6.3, 5.0028], [6.863, 5.5852]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.5441, 6.2898], [7.6808, 6.1541], [8.2594, 6.7209], [8.1071, 6.8721]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.863, 5.5852], [6.3, 5.0028], [6.4021, 4.9014], [6.9807, 5.4683]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.6808, 6.1541], [7.8106, 6.0179], [8.4043, 6.5689], [8.2594, 6.7209]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[6.9807, 5.4683], [6.4021, 4.9014], [6.4985, 4.8003], [7.0922, 5.3513]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.8106, 6.0179], [7.9333, 5.8821], [8.5419, 6.4166], [8.4043, 6.5689]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.0922, 5.3513], [6.4985, 4.8003], [6.5883, 4.7008], [7.1969, 5.2353]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.9333, 5.8821], [8.0484, 5.7472], [8.6718, 6.2644], [8.5419, 6.4166]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.1969, 5.2353], [6.5883, 4.7008], [6.6707, 4.6043], [7.2941, 5.1215]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.0484, 5.7472], [8.1556, 5.614], [8.7941, 6.1125], [8.6718, 6.2644]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.2941, 5.1215], [6.6707, 4.6043], [6.7447, 4.5125], [7.3832, 5.0109]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.1556, 5.614], [8.2546, 5.4831], [8.9086, 5.961], [8.7941, 6.1125]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.3832, 5.0109], [6.7447, 4.5125], [6.8094, 4.427], [7.4634, 4.9049]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.2546, 5.4831], [8.3458, 5.3537], [9.0174, 5.8065], [8.9086, 5.961]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.4634, 4.9049], [6.8094, 4.427], [6.8616, 4.353], [7.5332, 4.8058]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.3458, 5.3537], [8.435, 5.2099], [9.1401, 5.6087], [9.0174, 5.8065]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.5332, 4.8058], [6.8616, 4.353], [6.8771, 4.3285], [7.5821, 4.7274]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.435, 5.2099], [8.5097, 5.0645], [9.2448, 5.4047], [9.1401, 5.6087]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.5821, 4.7274], [6.8771, 4.3285], [6.8852, 4.3126], [7.6203, 4.6528]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.5097, 5.0645], [8.5698, 4.9199], [9.3294, 5.2012], [9.2448, 5.4047]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.6203, 4.6528], [6.8852, 4.3126], [6.8912, 4.2984], [7.6508, 4.5796]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.5698, 4.9199], [8.6165, 4.7777], [9.3947, 5.0024], [9.3294, 5.2012]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.6508, 4.5796], [6.8912, 4.2984], [6.8967, 4.2812], [7.675, 4.5059]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.6165, 4.7777], [8.6515, 4.6393], [9.4428, 4.8123], [9.3947, 5.0024]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.675, 4.5059], [6.8967, 4.2812], [6.9028, 4.257], [7.6941, 4.43]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.6515, 4.6393], [8.6767, 4.5058], [9.4764, 4.6342], [9.4428, 4.8123]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.6941, 4.43], [6.9028, 4.257], [6.9093, 4.222], [7.7091, 4.3504]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.6767, 4.5058], [8.6942, 4.3781], [9.4989, 4.4706], [9.4764, 4.6342]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7091, 4.3504], [6.9093, 4.222], [6.9159, 4.1736], [7.7206, 4.2662]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.6942, 4.3781], [8.706, 4.2567], [9.5133, 4.323], [9.4989, 4.4706]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7206, 4.2662], [6.9159, 4.1736], [6.922, 4.1101], [7.7293, 4.1764]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.706, 4.2567], [8.7142, 4.1417], [9.5226, 4.1921], [9.5133, 4.323]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7293, 4.1764], [6.922, 4.1101], [6.9276, 4.0303], [7.7361, 4.0807]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7142, 4.1417], [8.7204, 4.0333], [9.5292, 4.0784], [9.5226, 4.1921]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7361, 4.0807], [6.9276, 4.0303], [6.9332, 3.9337], [7.742, 3.9788]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7204, 4.0333], [8.7263, 3.9313], [9.5348, 3.9818], [9.5292, 4.0784]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.742, 3.9788], [6.9332, 3.9337], [6.9398, 3.8199], [7.7482, 3.8703]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7263, 3.9313], [8.7331, 3.8356], [9.5404, 3.902], [9.5348, 3.9818]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7482, 3.8703], [6.9398, 3.8199], [6.9491, 3.6891], [7.7564, 3.7554]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7331, 3.8356], [8.7418, 3.7459], [9.5465, 3.8384], [9.5404, 3.902]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7564, 3.7554], [6.9491, 3.6891], [6.9636, 3.5415], [7.7683, 3.634]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7418, 3.7459], [8.7533, 3.6616], [9.5531, 3.7901], [9.5465, 3.8384]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7683, 3.634], [6.9636, 3.5415], [6.986, 3.3779], [7.7857, 3.5063]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[8.7533, 3.6616], [8.7691, 3.5784], [9.5617, 3.7453], [9.5531, 3.7901]], y: [-0.4, 0.4], collide: 2}
      - {kind: poly, points: [[7.7857, 3.5063], [6.986, 3.3779], [7.0175, 3.2096], [7.8101, 3.3765]], y: [-0.4, 0.4], collide: 2}
      - {kind: disc, center: [-1.908, 2.3916], radius: 1.3, y: [0.0, 0.4], collide: 0}
      - {kind: disc, center: [8.2896, 3.4774], radius: 1.3, y: [0.0, 0.4], collide: 0}
      - {kind: poly, points: [[-3.208, 2.3916], [-3.1637, 2.0551], [-3.0338, 1.7416], [-1.299, -0.75], [-1.0607, -1.0607], [-0.75, -1.299], [-0.3882, -1.4489], [-0.0, -1.5], [0.3882, -1.4489], [0.75, -1.299], [1.0607, -1.0607], [1.299, -0.75], [1.4489, -0.3882], [1.5, 0.0], [1.4489, 0.3882], [1.299, 0.75], [1.0607, 1.0607], [-0.9888, 3.3108], [-1.258, 3.5174], [-1.5715, 3.6473], [-1.908, 3.6916], [-2.2445, 3.6473], [-2.558, 3.5174], [-2.8272, 3.3108], [-3.0338, 3.0416], [-3.1637, 2.728]], y: [-0.4, 0.4], collide: 0}   # the boss round the shaft and the web to the slot
      - {kind: disc, center: [0, 0], radius: 0.6, y: [-1.4, 0.4], collide: 0, color: "#6f6a60"}   # the shaft's end
  - id: bar
    shape: part
    pos: [1.6, 0, 7.3639]
    density: 2700
    friction: 0.1
    color: "#a39a86"
    pieces:
      - {kind: poly, points: [[1.15, -6.0], [2.05, -6.0], [2.05, 13.8639], [1.15, 13.8639]], y: [1.0, 1.7], collide: 0}   # the bar, behind the arm
      - {kind: disc, center: [1.6, 7.3639], radius: 0.45, y: [-0.6, 1.0], collide: 1, color: "#6f6a60"}   # its pin in the slot
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    density: 7800
    color: "#cfc6b4"
    pieces:
      - {kind: disc, center: [0, 0], radius: 0.6, y: [0.4, 3.0], collide: 0, color: "#6f6a60"}   # the shaft, behind (it stops short of the bar's plane at its line)
      - {kind: poly, points: [[0.7, 9.2639], [2.5, 9.2639], [2.5, 10.2639], [0.7, 10.2639]], y: [0.9, 1.8], collide: 0, color: "#8f8a80"}   # the upper guide
      - {kind: poly, points: [[0.7, -4.8], [2.5, -4.8], [2.5, -3.8], [0.7, -3.8]], y: [0.9, 1.8], collide: 0, color: "#8f8a80"}   # the lower guide
      - {kind: poly, points: [[2.5, -4.8], [3.2, -4.8], [3.2, 10.2639], [2.5, 10.2639]], y: [1.8, 2.4], collide: 0, color: "#9c9282"}   # the guides' standard
joints:
  - {id: j_arm, type: hinge, body: arm, axis: [0, -1, 0], damping: 0.01}   # the one driven joint; +: counter-clockwise
  - {id: j_bar, type: slide, body: bar, axis: [0, 0, 1], damping: 0.5, range: [-4.0935, 2.4442]}   # the guides; stops beyond the travel
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.72, hz: 0.3}, kv: 20, max_torque: 40}
checks:
  - {type: position, joint: j_bar, min: -3.644, max: 1.994, settle_s: 0.2, window_s: 9.5}
  - {type: amplitude, joint: j_bar, min: 0.02402, max: 0.02936, sustain: 0.8, settle_s: 0.5, window_s: 9}
  - {type: ratio_range, out: j_bar, in: j_arm, min: 0.00768, max: 0.07188, min_swing: 0.02363, settle_s: 0.5, window_s: 6.66667, slices: 16}
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [1, 0, 3], position: [1, -70, 4], fov: 34}
display:
  output: j_bar
  labels: {j_arm: "Shaft and curved arm (driver)", j_bar: "Vertical bar"}
  proof: {label: "Pin out of the slot", sub: "the arm turns alone: the bar drops to its stop"}

