number: 354
slug: crank-grooved-cross-head-uniform-velocity
name: Crank and cross-head with an endless groove
brown: "A modification of the crank and slotted cross-head, 93. The cross-head contains an endless groove in which the crank-wrist works, and which is formed to produce a uniform velocity of movement of the wrist or reciprocating-rod."
units: cm
sim: {timestep: 0.0002, integrator: implicitfast, iterations: 100, solver: PGS, duration_s: 8, floor: false, gravity: 0}
bodies:
  # the crank, its wrist working in the groove
  - id: crank
    shape: part
    pos: [0, 0, 0]
    density: 7800
    color: "#8f8a80"
    pieces:
      - {kind: disc, center: [0, 0], radius: 9.4, y: [0.2, 1.0]}
      - {kind: disc, center: [0, 8.0], radius: 0.5, y: [-1.8, 0.2], collide: 2, color: "#6f6a60"}
      - {kind: disc, center: [0, 0], radius: 1.0, y: [1.0, 3.0]}
  # the cross-head with its endless groove, and the reciprocating rod
  - id: head
    shape: part
    pos: [0, 0, 5.6]
    density: 2000
    color: "#b8ad97"
    pieces:
      - {kind: poly, points: [[-10.2, 0.6103], [10.2, 0.6103], [10.2, 10.5897], [-10.2, 10.5897]], y: [-0.9, -0.3], color: "#d9cfb6"}
      - {kind: poly, points: [[-0.0, 3.72], [-0.3432, 3.71], [-0.3824, 4.4089], [-0.0, 4.42]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.0, 1.98], [-0.2457, 1.9727], [-0.285, 2.6716], [-0.0, 2.68]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.3432, 3.71], [-0.6812, 3.682], [-0.7532, 4.3783], [-0.3824, 4.4089]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.2457, 1.9727], [-0.5022, 1.9513], [-0.5742, 2.6475], [-0.285, 2.6716]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.6812, 3.682], [-1.0107, 3.6412], [-1.1055, 4.3348], [-0.7532, 4.3783]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.5022, 1.9513], [-0.7751, 1.9173], [-0.8699, 2.6108], [-0.5742, 2.6475]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.0107, 3.6412], [-1.3311, 3.5934], [-1.4383, 4.2851], [-1.1055, 4.3348]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.7751, 1.9173], [-1.0646, 1.8739], [-1.1718, 2.5657], [-0.8699, 2.6108]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.3311, 3.5934], [-1.643, 3.5433], [-1.7537, 4.2345], [-1.4383, 4.2851]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.0646, 1.8739], [-1.3678, 1.8252], [-1.4785, 2.5164], [-1.1718, 2.5657]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.643, 3.5433], [-1.9472, 3.4947], [-2.0544, 4.1864], [-1.7537, 4.2345]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.3678, 1.8252], [-1.6807, 1.7752], [-1.7879, 2.467], [-1.4785, 2.5164]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.9472, 3.4947], [-2.2447, 3.45], [-2.3431, 4.1431], [-2.0544, 4.1864]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.6807, 1.7752], [-2.0, 1.7273], [-2.0984, 2.4204], [-1.7879, 2.467]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.2447, 3.45], [-2.5358, 3.4111], [-2.6214, 4.1058], [-2.3431, 4.1431]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.0, 1.7273], [-2.3228, 1.6841], [-2.4085, 2.3789], [-2.0984, 2.4204]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.5358, 3.4111], [-2.8208, 3.3789], [-2.8906, 4.0755], [-2.6214, 4.1058]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.3228, 1.6841], [-2.6473, 1.6476], [-2.7171, 2.3441], [-2.4085, 2.3789]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.8208, 3.3789], [-3.0998, 3.3545], [-3.1513, 4.0526], [-2.8906, 4.0755]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.6473, 1.6476], [-2.9716, 1.6192], [-3.0232, 2.3173], [-2.7171, 2.3441]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.0998, 3.3545], [-3.3726, 3.3381], [-3.404, 4.0374], [-3.1513, 4.0526]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.9716, 1.6192], [-3.2946, 1.5999], [-3.326, 2.2992], [-3.0232, 2.3173]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.3726, 3.3381], [-3.639, 3.3302], [-3.6486, 4.0302], [-3.404, 4.0374]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.2946, 1.5999], [-3.6153, 1.5904], [-3.6248, 2.2903], [-3.326, 2.2992]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.639, 3.3302], [-3.8988, 3.3309], [-3.8852, 4.0308], [-3.6486, 4.0302]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.6153, 1.5904], [-3.9327, 1.5912], [-3.9191, 2.2911], [-3.6248, 2.2903]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.8988, 3.3309], [-4.1517, 3.3402], [-4.1137, 4.0392], [-3.8852, 4.0308]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.9327, 1.5912], [-4.2463, 1.6028], [-4.2083, 2.3017], [-3.9191, 2.2911]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.1517, 3.3402], [-4.3973, 3.358], [-4.3338, 4.0551], [-4.1137, 4.0392]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.2463, 1.6028], [-4.5553, 1.6252], [-4.4918, 2.3223], [-4.2083, 2.3017]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.3973, 3.358], [-4.6354, 3.3843], [-4.5453, 4.0784], [-4.3338, 4.0551]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.5553, 1.6252], [-4.8592, 1.6587], [-4.7692, 2.3529], [-4.4918, 2.3223]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.6354, 3.3843], [-4.8655, 3.4187], [-4.748, 4.1088], [-4.5453, 4.0784]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.8592, 1.6587], [-5.1575, 1.7034], [-5.04, 2.3935], [-4.7692, 2.3529]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.8655, 3.4187], [-5.0873, 3.4612], [-4.9416, 4.1458], [-4.748, 4.1088]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.1575, 1.7034], [-5.4496, 1.7593], [-5.3039, 2.444], [-5.04, 2.3935]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.0873, 3.4612], [-5.3006, 3.5113], [-5.1258, 4.1891], [-4.9416, 4.1458]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.4496, 1.7593], [-5.7351, 1.8264], [-5.5603, 2.5043], [-5.3039, 2.444]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.3006, 3.5113], [-5.5049, 3.5688], [-5.3003, 4.2383], [-5.1258, 4.1891]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.7351, 1.8264], [-6.0134, 1.9048], [-5.8088, 2.5742], [-5.5603, 2.5043]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.5049, 3.5688], [-5.7, 3.6333], [-5.465, 4.2927], [-5.3003, 4.2383]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.0134, 1.9048], [-6.2842, 1.9943], [-6.0492, 2.6537], [-5.8088, 2.5742]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.7, 3.6333], [-5.8856, 3.7045], [-5.6196, 4.352], [-5.465, 4.2927]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.2842, 1.9943], [-6.5469, 2.095], [-6.2809, 2.7425], [-6.0492, 2.6537]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.8856, 3.7045], [-6.0615, 3.7818], [-5.764, 4.4154], [-5.6196, 4.352]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.5469, 2.095], [-6.8011, 2.2068], [-6.5036, 2.8404], [-6.2809, 2.7425]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.0615, 3.7818], [-6.2274, 3.8649], [-5.898, 4.4826], [-5.764, 4.4154]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.8011, 2.2068], [-7.0463, 2.3296], [-6.7168, 2.9473], [-6.5036, 2.8404]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.2274, 3.8649], [-6.3831, 3.9533], [-6.0216, 4.5527], [-5.898, 4.4826]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0463, 2.3296], [-7.282, 2.4634], [-6.9204, 3.0628], [-6.7168, 2.9473]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.3831, 3.9533], [-6.5285, 4.0465], [-6.1346, 4.6252], [-6.0216, 4.5527]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.282, 2.4634], [-7.5076, 2.6081], [-7.1137, 3.1868], [-6.9204, 3.0628]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.5285, 4.0465], [-6.6634, 4.144], [-6.2373, 4.6994], [-6.1346, 4.6252]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.5076, 2.6081], [-7.7226, 2.7635], [-7.2965, 3.3189], [-7.1137, 3.1868]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.6634, 4.144], [-6.7878, 4.2453], [-6.3297, 4.7746], [-6.2373, 4.6994]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.7226, 2.7635], [-7.9264, 2.9296], [-7.4683, 3.4589], [-7.2965, 3.3189]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.7878, 4.2453], [-6.9015, 4.35], [-6.412, 4.8503], [-6.3297, 4.7746]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.9264, 2.9296], [-8.1183, 3.1061], [-7.6288, 3.6065], [-7.4683, 3.4589]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.9015, 4.35], [-7.0047, 4.4574], [-6.4845, 4.9259], [-6.412, 4.8503]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.1183, 3.1061], [-8.2976, 3.2929], [-7.7774, 3.7614], [-7.6288, 3.6065]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0047, 4.4574], [-7.0972, 4.5672], [-6.5476, 5.0006], [-6.4845, 4.9259]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.2976, 3.2929], [-8.4635, 3.4896], [-7.9138, 3.9231], [-7.7774, 3.7614]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0972, 4.5672], [-7.1794, 4.6788], [-6.6017, 5.0742], [-6.5476, 5.0006]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.4635, 3.4896], [-8.6152, 3.6959], [-8.0375, 4.0913], [-7.9138, 3.9231]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.1794, 4.6788], [-7.2512, 4.7919], [-6.6474, 5.1462], [-6.6017, 5.0742]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.6152, 3.6959], [-8.7519, 3.9112], [-8.1481, 4.2655], [-8.0375, 4.0913]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.2512, 4.7919], [-7.3128, 4.906], [-6.6853, 5.2162], [-6.6474, 5.1462]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.7519, 3.9112], [-8.8726, 4.135], [-8.2451, 4.4452], [-8.1481, 4.2655]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.3128, 4.906], [-7.3645, 5.021], [-6.7159, 5.2843], [-6.6853, 5.2162]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.8726, 4.135], [-8.9767, 4.3664], [-8.3281, 4.6297], [-8.2451, 4.4452]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.3645, 5.021], [-7.4064, 5.1364], [-6.7399, 5.3504], [-6.7159, 5.2843]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.9767, 4.3664], [-9.0631, 4.6045], [-8.3966, 4.8185], [-8.3281, 4.6297]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4064, 5.1364], [-7.4388, 5.2521], [-6.7579, 5.4146], [-6.7399, 5.3504]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.0631, 4.6045], [-9.1312, 4.8482], [-8.4503, 5.0107], [-8.3966, 4.8185]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4388, 5.2521], [-7.4617, 5.368], [-6.7703, 5.4773], [-6.7579, 5.4146]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.1312, 4.8482], [-9.1804, 5.0963], [-8.489, 5.2056], [-8.4503, 5.0107]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4617, 5.368], [-7.4754, 5.484], [-6.7776, 5.539], [-6.7703, 5.4773]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.1804, 5.0963], [-9.2101, 5.3474], [-8.5122, 5.4024], [-8.489, 5.2056]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4754, 5.484], [-7.48, 5.6], [-6.78, 5.6], [-6.7776, 5.539]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.2101, 5.3474], [-9.22, 5.6], [-8.52, 5.6], [-8.5122, 5.4024]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.48, 5.6], [-7.4754, 5.716], [-6.7776, 5.661], [-6.78, 5.6]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.22, 5.6], [-9.2101, 5.8526], [-8.5122, 5.7976], [-8.52, 5.6]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4754, 5.716], [-7.4617, 5.832], [-6.7703, 5.7227], [-6.7776, 5.661]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.2101, 5.8526], [-9.1804, 6.1037], [-8.489, 5.9944], [-8.5122, 5.7976]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4617, 5.832], [-7.4388, 5.9479], [-6.7579, 5.7854], [-6.7703, 5.7227]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.1804, 6.1037], [-9.1312, 6.3518], [-8.4503, 6.1893], [-8.489, 5.9944]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4388, 5.9479], [-7.4064, 6.0636], [-6.7399, 5.8496], [-6.7579, 5.7854]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.1312, 6.3518], [-9.0631, 6.5955], [-8.3966, 6.3815], [-8.4503, 6.1893]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.4064, 6.0636], [-7.3645, 6.179], [-6.7159, 5.9157], [-6.7399, 5.8496]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-9.0631, 6.5955], [-8.9767, 6.8336], [-8.3281, 6.5703], [-8.3966, 6.3815]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.3645, 6.179], [-7.3128, 6.294], [-6.6853, 5.9838], [-6.7159, 5.9157]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.9767, 6.8336], [-8.8726, 7.065], [-8.2451, 6.7548], [-8.3281, 6.5703]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.3128, 6.294], [-7.2512, 6.4081], [-6.6474, 6.0538], [-6.6853, 5.9838]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.8726, 7.065], [-8.7519, 7.2888], [-8.1481, 6.9345], [-8.2451, 6.7548]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.2512, 6.4081], [-7.1794, 6.5212], [-6.6017, 6.1258], [-6.6474, 6.0538]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.7519, 7.2888], [-8.6152, 7.5041], [-8.0375, 7.1087], [-8.1481, 6.9345]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.1794, 6.5212], [-7.0972, 6.6328], [-6.5476, 6.1994], [-6.6017, 6.1258]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.6152, 7.5041], [-8.4635, 7.7104], [-7.9138, 7.2769], [-8.0375, 7.1087]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0972, 6.6328], [-7.0047, 6.7426], [-6.4845, 6.2741], [-6.5476, 6.1994]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.4635, 7.7104], [-8.2976, 7.9071], [-7.7774, 7.4386], [-7.9138, 7.2769]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0047, 6.7426], [-6.9015, 6.85], [-6.412, 6.3497], [-6.4845, 6.2741]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.2976, 7.9071], [-8.1183, 8.0939], [-7.6288, 7.5935], [-7.7774, 7.4386]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.9015, 6.85], [-6.7878, 6.9547], [-6.3297, 6.4254], [-6.412, 6.3497]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-8.1183, 8.0939], [-7.9264, 8.2704], [-7.4683, 7.7411], [-7.6288, 7.5935]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.7878, 6.9547], [-6.6634, 7.056], [-6.2373, 6.5006], [-6.3297, 6.4254]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.9264, 8.2704], [-7.7226, 8.4365], [-7.2965, 7.8811], [-7.4683, 7.7411]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.6634, 7.056], [-6.5285, 7.1535], [-6.1346, 6.5748], [-6.2373, 6.5006]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.7226, 8.4365], [-7.5076, 8.5919], [-7.1137, 8.0132], [-7.2965, 7.8811]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.5285, 7.1535], [-6.3831, 7.2467], [-6.0216, 6.6473], [-6.1346, 6.5748]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.5076, 8.5919], [-7.282, 8.7366], [-6.9204, 8.1372], [-7.1137, 8.0132]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.3831, 7.2467], [-6.2274, 7.3351], [-5.898, 6.7174], [-6.0216, 6.6473]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.282, 8.7366], [-7.0463, 8.8704], [-6.7168, 8.2527], [-6.9204, 8.1372]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.2274, 7.3351], [-6.0615, 7.4182], [-5.764, 6.7846], [-5.898, 6.7174]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-7.0463, 8.8704], [-6.8011, 8.9932], [-6.5036, 8.3596], [-6.7168, 8.2527]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.0615, 7.4182], [-5.8856, 7.4955], [-5.6196, 6.848], [-5.764, 6.7846]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.8011, 8.9932], [-6.5469, 9.105], [-6.2809, 8.4575], [-6.5036, 8.3596]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.8856, 7.4955], [-5.7, 7.5667], [-5.465, 6.9073], [-5.6196, 6.848]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.5469, 9.105], [-6.2842, 9.2057], [-6.0492, 8.5463], [-6.2809, 8.4575]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.7, 7.5667], [-5.5049, 7.6312], [-5.3003, 6.9617], [-5.465, 6.9073]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.2842, 9.2057], [-6.0134, 9.2952], [-5.8088, 8.6258], [-6.0492, 8.5463]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.5049, 7.6312], [-5.3006, 7.6887], [-5.1258, 7.0109], [-5.3003, 6.9617]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-6.0134, 9.2952], [-5.7351, 9.3736], [-5.5603, 8.6957], [-5.8088, 8.6258]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.3006, 7.6887], [-5.0873, 7.7388], [-4.9416, 7.0542], [-5.1258, 7.0109]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.7351, 9.3736], [-5.4496, 9.4407], [-5.3039, 8.756], [-5.5603, 8.6957]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.0873, 7.7388], [-4.8655, 7.7813], [-4.748, 7.0912], [-4.9416, 7.0542]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.4496, 9.4407], [-5.1575, 9.4966], [-5.04, 8.8065], [-5.3039, 8.756]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.8655, 7.7813], [-4.6354, 7.8157], [-4.5453, 7.1216], [-4.748, 7.0912]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-5.1575, 9.4966], [-4.8592, 9.5413], [-4.7692, 8.8471], [-5.04, 8.8065]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.6354, 7.8157], [-4.3973, 7.842], [-4.3338, 7.1449], [-4.5453, 7.1216]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.8592, 9.5413], [-4.5553, 9.5748], [-4.4918, 8.8777], [-4.7692, 8.8471]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.3973, 7.842], [-4.1517, 7.8598], [-4.1137, 7.1608], [-4.3338, 7.1449]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.5553, 9.5748], [-4.2463, 9.5972], [-4.2083, 8.8983], [-4.4918, 8.8777]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.1517, 7.8598], [-3.8988, 7.8691], [-3.8852, 7.1692], [-4.1137, 7.1608]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-4.2463, 9.5972], [-3.9327, 9.6088], [-3.9191, 8.9089], [-4.2083, 8.8983]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.8988, 7.8691], [-3.639, 7.8698], [-3.6486, 7.1698], [-3.8852, 7.1692]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.9327, 9.6088], [-3.6153, 9.6096], [-3.6248, 8.9097], [-3.9191, 8.9089]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.639, 7.8698], [-3.3726, 7.8619], [-3.404, 7.1626], [-3.6486, 7.1698]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.6153, 9.6096], [-3.2946, 9.6001], [-3.326, 8.9008], [-3.6248, 8.9097]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.3726, 7.8619], [-3.0998, 7.8455], [-3.1513, 7.1474], [-3.404, 7.1626]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.2946, 9.6001], [-2.9716, 9.5808], [-3.0232, 8.8827], [-3.326, 8.9008]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-3.0998, 7.8455], [-2.8208, 7.8211], [-2.8906, 7.1245], [-3.1513, 7.1474]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.9716, 9.5808], [-2.6473, 9.5524], [-2.7171, 8.8559], [-3.0232, 8.8827]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.8208, 7.8211], [-2.5358, 7.7889], [-2.6214, 7.0942], [-2.8906, 7.1245]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.6473, 9.5524], [-2.3228, 9.5159], [-2.4085, 8.8211], [-2.7171, 8.8559]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.5358, 7.7889], [-2.2447, 7.75], [-2.3431, 7.0569], [-2.6214, 7.0942]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.3228, 9.5159], [-2.0, 9.4727], [-2.0984, 8.7796], [-2.4085, 8.8211]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.2447, 7.75], [-1.9472, 7.7053], [-2.0544, 7.0136], [-2.3431, 7.0569]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-2.0, 9.4727], [-1.6807, 9.4248], [-1.7879, 8.733], [-2.0984, 8.7796]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.9472, 7.7053], [-1.643, 7.6567], [-1.7537, 6.9655], [-2.0544, 7.0136]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.6807, 9.4248], [-1.3678, 9.3748], [-1.4785, 8.6836], [-1.7879, 8.733]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.643, 7.6567], [-1.3311, 7.6066], [-1.4383, 6.9149], [-1.7537, 6.9655]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.3678, 9.3748], [-1.0646, 9.3261], [-1.1718, 8.6343], [-1.4785, 8.6836]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.3311, 7.6066], [-1.0107, 7.5588], [-1.1055, 6.8652], [-1.4383, 6.9149]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.0646, 9.3261], [-0.7751, 9.2827], [-0.8699, 8.5892], [-1.1718, 8.6343]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-1.0107, 7.5588], [-0.6812, 7.518], [-0.7532, 6.8217], [-1.1055, 6.8652]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.7751, 9.2827], [-0.5022, 9.2487], [-0.5742, 8.5525], [-0.8699, 8.5892]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.6812, 7.518], [-0.3432, 7.49], [-0.3824, 6.7911], [-0.7532, 6.8217]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.5022, 9.2487], [-0.2457, 9.2273], [-0.285, 8.5284], [-0.5742, 8.5525]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.3432, 7.49], [0.0, 7.48], [0.0, 6.78], [-0.3824, 6.7911]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[-0.2457, 9.2273], [0.0, 9.22], [0.0, 8.52], [-0.285, 8.5284]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.0, 7.48], [0.3432, 7.49], [0.3824, 6.7911], [0.0, 6.78]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.0, 9.22], [0.2457, 9.2273], [0.285, 8.5284], [0.0, 8.52]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.3432, 7.49], [0.6812, 7.518], [0.7532, 6.8217], [0.3824, 6.7911]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.2457, 9.2273], [0.5022, 9.2487], [0.5742, 8.5525], [0.285, 8.5284]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.6812, 7.518], [1.0107, 7.5588], [1.1055, 6.8652], [0.7532, 6.8217]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.5022, 9.2487], [0.7751, 9.2827], [0.8699, 8.5892], [0.5742, 8.5525]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.0107, 7.5588], [1.3311, 7.6066], [1.4383, 6.9149], [1.1055, 6.8652]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.7751, 9.2827], [1.0646, 9.3261], [1.1718, 8.6343], [0.8699, 8.5892]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.3311, 7.6066], [1.643, 7.6567], [1.7537, 6.9655], [1.4383, 6.9149]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.0646, 9.3261], [1.3678, 9.3748], [1.4785, 8.6836], [1.1718, 8.6343]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.643, 7.6567], [1.9472, 7.7053], [2.0544, 7.0136], [1.7537, 6.9655]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.3678, 9.3748], [1.6807, 9.4248], [1.7879, 8.733], [1.4785, 8.6836]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.9472, 7.7053], [2.2447, 7.75], [2.3431, 7.0569], [2.0544, 7.0136]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.6807, 9.4248], [2.0, 9.4727], [2.0984, 8.7796], [1.7879, 8.733]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.2447, 7.75], [2.5358, 7.7889], [2.6214, 7.0942], [2.3431, 7.0569]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.0, 9.4727], [2.3228, 9.5159], [2.4085, 8.8211], [2.0984, 8.7796]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.5358, 7.7889], [2.8208, 7.8211], [2.8906, 7.1245], [2.6214, 7.0942]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.3228, 9.5159], [2.6473, 9.5524], [2.7171, 8.8559], [2.4085, 8.8211]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.8208, 7.8211], [3.0998, 7.8455], [3.1513, 7.1474], [2.8906, 7.1245]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.6473, 9.5524], [2.9716, 9.5808], [3.0232, 8.8827], [2.7171, 8.8559]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.0998, 7.8455], [3.3726, 7.8619], [3.404, 7.1626], [3.1513, 7.1474]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.9716, 9.5808], [3.2946, 9.6001], [3.326, 8.9008], [3.0232, 8.8827]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.3726, 7.8619], [3.639, 7.8698], [3.6486, 7.1698], [3.404, 7.1626]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.2946, 9.6001], [3.6153, 9.6096], [3.6248, 8.9097], [3.326, 8.9008]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.639, 7.8698], [3.8988, 7.8691], [3.8852, 7.1692], [3.6486, 7.1698]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.6153, 9.6096], [3.9327, 9.6088], [3.9191, 8.9089], [3.6248, 8.9097]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.8988, 7.8691], [4.1517, 7.8598], [4.1137, 7.1608], [3.8852, 7.1692]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.9327, 9.6088], [4.2463, 9.5972], [4.2083, 8.8983], [3.9191, 8.9089]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.1517, 7.8598], [4.3973, 7.842], [4.3338, 7.1449], [4.1137, 7.1608]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.2463, 9.5972], [4.5553, 9.5748], [4.4918, 8.8777], [4.2083, 8.8983]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.3973, 7.842], [4.6354, 7.8157], [4.5453, 7.1216], [4.3338, 7.1449]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.5553, 9.5748], [4.8592, 9.5413], [4.7692, 8.8471], [4.4918, 8.8777]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.6354, 7.8157], [4.8655, 7.7813], [4.748, 7.0912], [4.5453, 7.1216]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.8592, 9.5413], [5.1575, 9.4966], [5.04, 8.8065], [4.7692, 8.8471]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.8655, 7.7813], [5.0873, 7.7388], [4.9416, 7.0542], [4.748, 7.0912]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.1575, 9.4966], [5.4496, 9.4407], [5.3039, 8.756], [5.04, 8.8065]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.0873, 7.7388], [5.3006, 7.6887], [5.1258, 7.0109], [4.9416, 7.0542]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.4496, 9.4407], [5.7351, 9.3736], [5.5603, 8.6957], [5.3039, 8.756]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.3006, 7.6887], [5.5049, 7.6312], [5.3003, 6.9617], [5.1258, 7.0109]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.7351, 9.3736], [6.0134, 9.2952], [5.8088, 8.6258], [5.5603, 8.6957]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.5049, 7.6312], [5.7, 7.5667], [5.465, 6.9073], [5.3003, 6.9617]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.0134, 9.2952], [6.2842, 9.2057], [6.0492, 8.5463], [5.8088, 8.6258]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.7, 7.5667], [5.8856, 7.4955], [5.6196, 6.848], [5.465, 6.9073]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.2842, 9.2057], [6.5469, 9.105], [6.2809, 8.4575], [6.0492, 8.5463]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.8856, 7.4955], [6.0615, 7.4182], [5.764, 6.7846], [5.6196, 6.848]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.5469, 9.105], [6.8011, 8.9932], [6.5036, 8.3596], [6.2809, 8.4575]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.0615, 7.4182], [6.2274, 7.3351], [5.898, 6.7174], [5.764, 6.7846]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.8011, 8.9932], [7.0463, 8.8704], [6.7168, 8.2527], [6.5036, 8.3596]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.2274, 7.3351], [6.3831, 7.2467], [6.0216, 6.6473], [5.898, 6.7174]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0463, 8.8704], [7.282, 8.7366], [6.9204, 8.1372], [6.7168, 8.2527]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.3831, 7.2467], [6.5285, 7.1535], [6.1346, 6.5748], [6.0216, 6.6473]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.282, 8.7366], [7.5076, 8.5919], [7.1137, 8.0132], [6.9204, 8.1372]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.5285, 7.1535], [6.6634, 7.056], [6.2373, 6.5006], [6.1346, 6.5748]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.5076, 8.5919], [7.7226, 8.4365], [7.2965, 7.8811], [7.1137, 8.0132]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.6634, 7.056], [6.7878, 6.9547], [6.3297, 6.4254], [6.2373, 6.5006]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.7226, 8.4365], [7.9264, 8.2704], [7.4683, 7.7411], [7.2965, 7.8811]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.7878, 6.9547], [6.9015, 6.85], [6.412, 6.3497], [6.3297, 6.4254]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.9264, 8.2704], [8.1183, 8.0939], [7.6288, 7.5935], [7.4683, 7.7411]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.9015, 6.85], [7.0047, 6.7426], [6.4845, 6.2741], [6.412, 6.3497]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.1183, 8.0939], [8.2976, 7.9071], [7.7774, 7.4386], [7.6288, 7.5935]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0047, 6.7426], [7.0972, 6.6328], [6.5476, 6.1994], [6.4845, 6.2741]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.2976, 7.9071], [8.4635, 7.7104], [7.9138, 7.2769], [7.7774, 7.4386]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0972, 6.6328], [7.1794, 6.5212], [6.6017, 6.1258], [6.5476, 6.1994]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.4635, 7.7104], [8.6152, 7.5041], [8.0375, 7.1087], [7.9138, 7.2769]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.1794, 6.5212], [7.2512, 6.4081], [6.6474, 6.0538], [6.6017, 6.1258]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.6152, 7.5041], [8.7519, 7.2888], [8.1481, 6.9345], [8.0375, 7.1087]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.2512, 6.4081], [7.3128, 6.294], [6.6853, 5.9838], [6.6474, 6.0538]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.7519, 7.2888], [8.8726, 7.065], [8.2451, 6.7548], [8.1481, 6.9345]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.3128, 6.294], [7.3645, 6.179], [6.7159, 5.9157], [6.6853, 5.9838]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.8726, 7.065], [8.9767, 6.8336], [8.3281, 6.5703], [8.2451, 6.7548]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.3645, 6.179], [7.4064, 6.0636], [6.7399, 5.8496], [6.7159, 5.9157]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.9767, 6.8336], [9.0631, 6.5955], [8.3966, 6.3815], [8.3281, 6.5703]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4064, 6.0636], [7.4388, 5.9479], [6.7579, 5.7854], [6.7399, 5.8496]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.0631, 6.5955], [9.1312, 6.3518], [8.4503, 6.1893], [8.3966, 6.3815]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4388, 5.9479], [7.4617, 5.832], [6.7703, 5.7227], [6.7579, 5.7854]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.1312, 6.3518], [9.1804, 6.1037], [8.489, 5.9944], [8.4503, 6.1893]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4617, 5.832], [7.4754, 5.716], [6.7776, 5.661], [6.7703, 5.7227]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.1804, 6.1037], [9.2101, 5.8526], [8.5122, 5.7976], [8.489, 5.9944]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4754, 5.716], [7.48, 5.6], [6.78, 5.6], [6.7776, 5.661]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.2101, 5.8526], [9.22, 5.6], [8.52, 5.6], [8.5122, 5.7976]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.48, 5.6], [7.4754, 5.484], [6.7776, 5.539], [6.78, 5.6]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.22, 5.6], [9.2101, 5.3474], [8.5122, 5.4024], [8.52, 5.6]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4754, 5.484], [7.4617, 5.368], [6.7703, 5.4773], [6.7776, 5.539]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.2101, 5.3474], [9.1804, 5.0963], [8.489, 5.2056], [8.5122, 5.4024]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4617, 5.368], [7.4388, 5.2521], [6.7579, 5.4146], [6.7703, 5.4773]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.1804, 5.0963], [9.1312, 4.8482], [8.4503, 5.0107], [8.489, 5.2056]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4388, 5.2521], [7.4064, 5.1364], [6.7399, 5.3504], [6.7579, 5.4146]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.1312, 4.8482], [9.0631, 4.6045], [8.3966, 4.8185], [8.4503, 5.0107]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.4064, 5.1364], [7.3645, 5.021], [6.7159, 5.2843], [6.7399, 5.3504]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[9.0631, 4.6045], [8.9767, 4.3664], [8.3281, 4.6297], [8.3966, 4.8185]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.3645, 5.021], [7.3128, 4.906], [6.6853, 5.2162], [6.7159, 5.2843]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.9767, 4.3664], [8.8726, 4.135], [8.2451, 4.4452], [8.3281, 4.6297]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.3128, 4.906], [7.2512, 4.7919], [6.6474, 5.1462], [6.6853, 5.2162]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.8726, 4.135], [8.7519, 3.9112], [8.1481, 4.2655], [8.2451, 4.4452]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.2512, 4.7919], [7.1794, 4.6788], [6.6017, 5.0742], [6.6474, 5.1462]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.7519, 3.9112], [8.6152, 3.6959], [8.0375, 4.0913], [8.1481, 4.2655]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.1794, 4.6788], [7.0972, 4.5672], [6.5476, 5.0006], [6.6017, 5.0742]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.6152, 3.6959], [8.4635, 3.4896], [7.9138, 3.9231], [8.0375, 4.0913]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0972, 4.5672], [7.0047, 4.4574], [6.4845, 4.9259], [6.5476, 5.0006]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.4635, 3.4896], [8.2976, 3.2929], [7.7774, 3.7614], [7.9138, 3.9231]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0047, 4.4574], [6.9015, 4.35], [6.412, 4.8503], [6.4845, 4.9259]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.2976, 3.2929], [8.1183, 3.1061], [7.6288, 3.6065], [7.7774, 3.7614]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.9015, 4.35], [6.7878, 4.2453], [6.3297, 4.7746], [6.412, 4.8503]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[8.1183, 3.1061], [7.9264, 2.9296], [7.4683, 3.4589], [7.6288, 3.6065]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.7878, 4.2453], [6.6634, 4.144], [6.2373, 4.6994], [6.3297, 4.7746]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.9264, 2.9296], [7.7226, 2.7635], [7.2965, 3.3189], [7.4683, 3.4589]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.6634, 4.144], [6.5285, 4.0465], [6.1346, 4.6252], [6.2373, 4.6994]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.7226, 2.7635], [7.5076, 2.6081], [7.1137, 3.1868], [7.2965, 3.3189]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.5285, 4.0465], [6.3831, 3.9533], [6.0216, 4.5527], [6.1346, 4.6252]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.5076, 2.6081], [7.282, 2.4634], [6.9204, 3.0628], [7.1137, 3.1868]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.3831, 3.9533], [6.2274, 3.8649], [5.898, 4.4826], [6.0216, 4.5527]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.282, 2.4634], [7.0463, 2.3296], [6.7168, 2.9473], [6.9204, 3.0628]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.2274, 3.8649], [6.0615, 3.7818], [5.764, 4.4154], [5.898, 4.4826]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[7.0463, 2.3296], [6.8011, 2.2068], [6.5036, 2.8404], [6.7168, 2.9473]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.0615, 3.7818], [5.8856, 3.7045], [5.6196, 4.352], [5.764, 4.4154]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.8011, 2.2068], [6.5469, 2.095], [6.2809, 2.7425], [6.5036, 2.8404]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.8856, 3.7045], [5.7, 3.6333], [5.465, 4.2927], [5.6196, 4.352]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.5469, 2.095], [6.2842, 1.9943], [6.0492, 2.6537], [6.2809, 2.7425]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.7, 3.6333], [5.5049, 3.5688], [5.3003, 4.2383], [5.465, 4.2927]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.2842, 1.9943], [6.0134, 1.9048], [5.8088, 2.5742], [6.0492, 2.6537]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.5049, 3.5688], [5.3006, 3.5113], [5.1258, 4.1891], [5.3003, 4.2383]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[6.0134, 1.9048], [5.7351, 1.8264], [5.5603, 2.5043], [5.8088, 2.5742]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.3006, 3.5113], [5.0873, 3.4612], [4.9416, 4.1458], [5.1258, 4.1891]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.7351, 1.8264], [5.4496, 1.7593], [5.3039, 2.444], [5.5603, 2.5043]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.0873, 3.4612], [4.8655, 3.4187], [4.748, 4.1088], [4.9416, 4.1458]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.4496, 1.7593], [5.1575, 1.7034], [5.04, 2.3935], [5.3039, 2.444]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.8655, 3.4187], [4.6354, 3.3843], [4.5453, 4.0784], [4.748, 4.1088]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[5.1575, 1.7034], [4.8592, 1.6587], [4.7692, 2.3529], [5.04, 2.3935]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.6354, 3.3843], [4.3973, 3.358], [4.3338, 4.0551], [4.5453, 4.0784]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.8592, 1.6587], [4.5553, 1.6252], [4.4918, 2.3223], [4.7692, 2.3529]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.3973, 3.358], [4.1517, 3.3402], [4.1137, 4.0392], [4.3338, 4.0551]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.5553, 1.6252], [4.2463, 1.6028], [4.2083, 2.3017], [4.4918, 2.3223]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.1517, 3.3402], [3.8988, 3.3309], [3.8852, 4.0308], [4.1137, 4.0392]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[4.2463, 1.6028], [3.9327, 1.5912], [3.9191, 2.2911], [4.2083, 2.3017]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.8988, 3.3309], [3.639, 3.3302], [3.6486, 4.0302], [3.8852, 4.0308]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.9327, 1.5912], [3.6153, 1.5904], [3.6248, 2.2903], [3.9191, 2.2911]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.639, 3.3302], [3.3726, 3.3381], [3.404, 4.0374], [3.6486, 4.0302]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.6153, 1.5904], [3.2946, 1.5999], [3.326, 2.2992], [3.6248, 2.2903]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.3726, 3.3381], [3.0998, 3.3545], [3.1513, 4.0526], [3.404, 4.0374]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.2946, 1.5999], [2.9716, 1.6192], [3.0232, 2.3173], [3.326, 2.2992]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[3.0998, 3.3545], [2.8208, 3.3789], [2.8906, 4.0755], [3.1513, 4.0526]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.9716, 1.6192], [2.6473, 1.6476], [2.7171, 2.3441], [3.0232, 2.3173]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.8208, 3.3789], [2.5358, 3.4111], [2.6214, 4.1058], [2.8906, 4.0755]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.6473, 1.6476], [2.3228, 1.6841], [2.4085, 2.3789], [2.7171, 2.3441]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.5358, 3.4111], [2.2447, 3.45], [2.3431, 4.1431], [2.6214, 4.1058]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.3228, 1.6841], [2.0, 1.7273], [2.0984, 2.4204], [2.4085, 2.3789]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.2447, 3.45], [1.9472, 3.4947], [2.0544, 4.1864], [2.3431, 4.1431]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[2.0, 1.7273], [1.6807, 1.7752], [1.7879, 2.467], [2.0984, 2.4204]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.9472, 3.4947], [1.643, 3.5433], [1.7537, 4.2345], [2.0544, 4.1864]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.6807, 1.7752], [1.3678, 1.8252], [1.4785, 2.5164], [1.7879, 2.467]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.643, 3.5433], [1.3311, 3.5934], [1.4383, 4.2851], [1.7537, 4.2345]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.3678, 1.8252], [1.0646, 1.8739], [1.1718, 2.5657], [1.4785, 2.5164]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.3311, 3.5934], [1.0107, 3.6412], [1.1055, 4.3348], [1.4383, 4.2851]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.0646, 1.8739], [0.7751, 1.9173], [0.8699, 2.6108], [1.1718, 2.5657]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[1.0107, 3.6412], [0.6812, 3.682], [0.7532, 4.3783], [1.1055, 4.3348]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.7751, 1.9173], [0.5022, 1.9513], [0.5742, 2.6475], [0.8699, 2.6108]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.6812, 3.682], [0.3432, 3.71], [0.3824, 4.4089], [0.7532, 4.3783]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.5022, 1.9513], [0.2457, 1.9727], [0.285, 2.6716], [0.5742, 2.6475]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.3432, 3.71], [-0.0, 3.72], [-0.0, 4.42], [0.3824, 4.4089]], y: [-1.7, -0.9], collide: 1}
      - {kind: poly, points: [[0.2457, 1.9727], [-0.0, 1.98], [-0.0, 2.68], [0.285, 2.6716]], y: [-1.7, -0.9], collide: 1}
      - {kind: rod, from: [0, -1.0, 10.5897], to: [0, -1.0, 24.5897], radius: 0.8}
      - {kind: rod, from: [0, -1.0, 0.6103], to: [0, -1.0, -13.3897], radius: 0.8}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#8f8a80"
    pieces:
      - {kind: poly, points: [[-3.5, 19.5897], [3.5, 19.5897], [3.5, 21.5897], [-3.5, 21.5897]], y: [-2.2, 0.2]}
      - {kind: poly, points: [[-3.5, -21.5897], [3.5, -21.5897], [3.5, -19.5897], [-3.5, -19.5897]], y: [-2.2, 0.2]}
      - {kind: poly, points: [[-16, -23.5897], [16, -23.5897], [16, 23.5897], [-16, 23.5897]], y: [3.0, 3.6], color: "#d8cfbb"}
joints:
  - {id: j_c, type: hinge, body: crank, axis: [0, 1, 0], damping: 0.01}   # the one driven joint; + : clockwise
  - {id: j_z, type: slide, body: head, axis: [0, 0, 1], damping: 0.05, range: [-13.2, 2]}   # the rod in its guides; + : up
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_c, kind: velocity, rpm: 30, kv: 20, max_torque: 40}
checks:
  # while the wrist goes from 0.6 rad past the top to 0.6 rad short of the bottom, the rod falls at a uniform rate ...
  - {type: follow, out: j_z, in: j_c, expect: -0.03966, tol: 0.00119, min_r2: 0.998, settle_s: 2.191, window_s: 0.618}
  # ... and rises at the same rate on the other half turn
  - {type: follow, out: j_z, in: j_c, expect: 0.03966, tol: 0.00119, min_r2: 0.998, settle_s: 3.191, window_s: 0.618}
  # the stroke is twice A, once each turn
  - {type: position, joint: j_z, min: -11.5, max: 0.3, settle_s: 0.5, window_s: 7}
  - {type: penetration, max: 0.0005, settle_s: 0.5}
camera: {target: [0, 0, -5], position: [0, -121, -5], fov: 30}
display:
  output: j_z
  labels: {j_c: "Crank (driver)", j_z: "Cross-head and rod"}

