# No. 143 (Brown 1868): "Circular motion into alternate rectilinear motion. Motion is transmitted through pulley at the left upon the worm-shaft. Worm slides upon shaft, but is made to turn with it by means of a groove cut in shaft, and a key in hub of worm. Worm is carried by a small traversing-frame, which slides upon a horizontal bar of the fixed frame, and the traversing-frame also carries the toothed wheel into which the worm gears. One end of a connecting-rod is attached to fixed frame at the right and the other end to a wrist secured in toothed wheel. On turning worm-shaft, rotary motion is transmitted by worm to wheel, which, as it revolves, is forced by connecting-rod to make an alternating traverse motion."
#
# Model (cm, no gravity; the plate's plane is x-z, depth y): a 18-tooth wheel (module 0.8) lies face-on on the traversing frame, with the worm (a right-hand single thread of 3 turns, 72 convex segments) along x under it, 9.76 below the wheel's centre;
# both are carried by the frame, which slides to and fro on the fixed bar. A worm sliding on a keyed shaft turns with the shaft, so the driven joint is the worm's turn relative to the frame it rides in (180 turns a minute). The wheel is turned by the thread alone (0.0556 of a turn per worm turn). A wrist 4.5 cm from the wheel's centre
# is joined by a 36.2802 cm connecting rod to a pin on the fixed post at the right, so the wheel's turning forces the frame to traverse 8.9999 cm (twice the wrist's radius, a little less). Generator: opencode-runs/batch10/gen143.py.
number: 143
slug: worm-traverse
name: A worm and wheel working a traversing frame
brown: "Circular motion into alternate rectilinear motion. Motion is transmitted through pulley at the left upon the worm-shaft. Worm slides upon shaft, but is made to turn with it by means of a groove cut in shaft, and a key in hub of worm. Worm is carried by a small traversing-frame, which slides upon a horizontal bar of the fixed frame, and the traversing-frame also carries the toothed wheel into which the worm gears. One end of a connecting-rod is attached to fixed frame at the right and the other end to a wrist secured in toothed wheel. On turning worm-shaft, rotary motion is transmitted by worm to wheel, which, as it revolves, is forced by connecting-rod to make an alternating traverse motion."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: CG
  multiccd: true
  duration_s: 13.0
  floor: false
  gravity: 0
bodies:
  - id: frame
    shape: part
    pos: [0, 0, 0]
    mass: 0.5
    color: "#cfc6b4"
    pieces:
      - {kind: poly, points: [[-11.0, -16.06], [11.0, -16.06], [11.0, -14.46], [-11.0, -14.46]], y: [1.2, 2.4], collide: 0, color: "#a89a7e"}
      - {kind: poly, points: [[-1.0, -15.26], [1.0, -15.26], [1.0, 2.2], [-1.0, 2.2]], y: [1.2, 2.4], collide: 0, color: "#a89a7e"}
      - {kind: poly, points: [[-1.0, -10.36], [1.0, -10.36], [1.0, -9.16], [-1.0, -9.16]], y: [1.2, 2.4], collide: 0, color: "#a89a7e"}
      - {kind: rod, from: [0, -1.0, 0], to: [0, 2.4, 0], radius: 0.7, color: "#8f8a80"}
      - {kind: rod, from: [-8.8, 0, -9.76], to: [-6.6, 0, -9.76], radius: 1.0, color: "#8f8a80"}
      - {kind: rod, from: [6.6, 0, -9.76], to: [8.8, 0, -9.76], radius: 1.0, color: "#8f8a80"}
      - {kind: poly, points: [[-8.8, -11.56], [-6.6, -11.56], [-6.6, -7.96], [-8.8, -7.96]], y: [0.8, 2.4], collide: 0, color: "#a89a7e"}
      - {kind: poly, points: [[6.6, -11.56], [8.8, -11.56], [8.8, -7.96], [6.6, -7.96]], y: [0.8, 2.4], collide: 0, color: "#a89a7e"}
  - id: wheel
    shape: part
    pos: [0, 0, 0]
    mount: frame
    mass: 0.3
    density: 7800
    friction: 0.1
    color: "#e8dec6"
    pieces:
      - {kind: disc, center: [0, 0], radius: 6.15, inner: 0.9, y: [-0.6400000000000001, 0.6400000000000001]}
      - {kind: poly, points: [[-0.6, 0.0], [-0.6, 4.5], [0.6, 4.5], [0.6, -0.0]], y: [-1.3, -0.7], collide: 0, color: "#a89a7e"}
      - {kind: disc, center: [0.0, 4.5], radius: 1.0, inner: 0.3, y: [-1.3, -0.7], color: "#a89a7e"}
      - {kind: poly, points: [[-0.0715, -5.5795], [-0.0867, -6.7652], [-0.0725, -6.8888], [-0.0446, -7.0125], [-0.0074, -7.136], [0.0376, -7.2594], [0.0897, -7.3823], [0.1483, -7.5049], [0.213, -7.6268], [0.2837, -7.748], [0.36, -7.8683], [0.4419, -7.9878], [0.9519, -7.9432], [1.0118, -7.8113], [1.066, -7.6795], [1.1146, -7.5479], [1.1572, -7.4166], [1.1936, -7.2858], [1.2235, -7.1556], [1.2465, -7.0263], [1.2616, -6.8982], [1.2676, -6.7716], [1.2602, -6.6474], [1.0393, -5.4824]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[1.8411, -5.2675], [2.2323, -6.3869], [2.288, -6.4982], [2.3565, -6.6048], [2.4337, -6.7082], [2.5182, -6.8087], [2.6092, -6.9065], [2.7061, -7.0015], [2.8087, -7.094], [2.9165, -7.1837], [3.0295, -7.2707], [3.1472, -7.3549], [3.6112, -7.1386], [3.6224, -6.9942], [3.6283, -6.8518], [3.6289, -6.7115], [3.624, -6.5735], [3.6135, -6.4381], [3.5971, -6.3056], [3.5744, -6.1763], [3.5448, -6.0507], [3.5072, -5.9297], [3.4577, -5.8155], [2.8517, -4.7963]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[3.5317, -4.3202], [4.2822, -5.2382], [4.3726, -5.3237], [4.4734, -5.4005], [4.5813, -5.4713], [4.695, -5.5368], [4.814, -5.5976], [4.9376, -5.6537], [5.0656, -5.7055], [5.1976, -5.7529], [5.3335, -5.7961], [5.473, -5.8349], [5.8349, -5.473], [5.7961, -5.3335], [5.7529, -5.1976], [5.7055, -5.0656], [5.6537, -4.9376], [5.5976, -4.814], [5.5368, -4.695], [5.4713, -4.5813], [5.4005, -4.4734], [5.3237, -4.3726], [5.2382, -4.2822], [4.3202, -3.5317]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[4.7963, -2.8517], [5.8155, -3.4577], [5.9297, -3.5072], [6.0507, -3.5448], [6.1763, -3.5744], [6.3056, -3.5971], [6.4381, -3.6135], [6.5735, -3.624], [6.7115, -3.6289], [6.8518, -3.6283], [6.9942, -3.6224], [7.1386, -3.6112], [7.3549, -3.1472], [7.2707, -3.0295], [7.1837, -2.9165], [7.094, -2.8087], [7.0015, -2.7061], [6.9065, -2.6092], [6.8087, -2.5182], [6.7082, -2.4337], [6.6048, -2.3565], [6.4982, -2.288], [6.3869, -2.2323], [5.2675, -1.8411]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[5.4824, -1.0393], [6.6474, -1.2602], [6.7716, -1.2676], [6.8982, -1.2616], [7.0263, -1.2465], [7.1556, -1.2235], [7.2858, -1.1936], [7.4166, -1.1572], [7.5479, -1.1146], [7.6795, -1.066], [7.8113, -1.0118], [7.9432, -0.9519], [7.9878, -0.4419], [7.8683, -0.36], [7.748, -0.2837], [7.6268, -0.213], [7.5049, -0.1483], [7.3823, -0.0897], [7.2594, -0.0376], [7.136, 0.0074], [7.0125, 0.0446], [6.8888, 0.0725], [6.7652, 0.0867], [5.5795, 0.0715]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[5.5072, 0.8984], [6.6775, 1.0893], [6.7968, 1.1249], [6.9137, 1.1738], [7.0289, 1.2319], [7.1426, 1.2976], [7.2546, 1.3702], [7.3651, 1.4492], [7.4739, 1.5342], [7.581, 1.6248], [7.6863, 1.7209], [7.7897, 1.8223], [7.6572, 2.3167], [7.517, 2.3528], [7.3777, 2.3834], [7.2397, 2.4083], [7.103, 2.4275], [6.9678, 2.4406], [6.8344, 2.4475], [6.7032, 2.4476], [6.5743, 2.4403], [6.4486, 2.4242], [6.3276, 2.3954], [5.2186, 1.9755]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[4.8678, 2.7278], [5.9022, 3.3075], [6.0021, 3.3817], [6.0953, 3.4676], [6.1837, 3.5616], [6.268, 3.6623], [6.3485, 3.7688], [6.4253, 3.8808], [6.4985, 3.9979], [6.5681, 4.1197], [6.6342, 4.246], [6.6967, 4.3766], [6.4031, 4.7959], [6.2589, 4.7819], [6.1176, 4.763], [5.9794, 4.7392], [5.8444, 4.7104], [5.7128, 4.6766], [5.5852, 4.6374], [5.4618, 4.5926], [5.3432, 4.5417], [5.2306, 4.4836], [5.1267, 4.4151], [4.2282, 3.6413]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[3.6413, 4.2282], [4.4151, 5.1267], [4.4836, 5.2306], [4.5417, 5.3432], [4.5926, 5.4618], [4.6374, 5.5852], [4.6766, 5.7128], [4.7104, 5.8444], [4.7392, 5.9794], [4.763, 6.1176], [4.7819, 6.2589], [4.7959, 6.4031], [4.3766, 6.6967], [4.246, 6.6342], [4.1197, 6.5681], [3.9979, 6.4985], [3.8808, 6.4253], [3.7688, 6.3485], [3.6623, 6.268], [3.5616, 6.1837], [3.4676, 6.0953], [3.3817, 6.0021], [3.3075, 5.9022], [2.7278, 4.8678]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[1.9755, 5.2186], [2.3954, 6.3276], [2.4242, 6.4486], [2.4403, 6.5743], [2.4476, 6.7032], [2.4475, 6.8344], [2.4406, 6.9678], [2.4275, 7.103], [2.4083, 7.2397], [2.3834, 7.3777], [2.3528, 7.517], [2.3167, 7.6572], [1.8223, 7.7897], [1.7209, 7.6863], [1.6248, 7.581], [1.5342, 7.4739], [1.4492, 7.3651], [1.3702, 7.2546], [1.2976, 7.1426], [1.2319, 7.0289], [1.1738, 6.9137], [1.1249, 6.7968], [1.0893, 6.6775], [0.8984, 5.5072]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[0.0715, 5.5795], [0.0867, 6.7652], [0.0725, 6.8888], [0.0446, 7.0125], [0.0074, 7.136], [-0.0376, 7.2594], [-0.0897, 7.3823], [-0.1483, 7.5049], [-0.213, 7.6268], [-0.2837, 7.748], [-0.36, 7.8683], [-0.4419, 7.9878], [-0.9519, 7.9432], [-1.0118, 7.8113], [-1.066, 7.6795], [-1.1146, 7.5479], [-1.1572, 7.4166], [-1.1936, 7.2858], [-1.2235, 7.1556], [-1.2465, 7.0263], [-1.2616, 6.8982], [-1.2676, 6.7716], [-1.2602, 6.6474], [-1.0393, 5.4824]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-1.8411, 5.2675], [-2.2323, 6.3869], [-2.288, 6.4982], [-2.3565, 6.6048], [-2.4337, 6.7082], [-2.5182, 6.8087], [-2.6092, 6.9065], [-2.7061, 7.0015], [-2.8087, 7.094], [-2.9165, 7.1837], [-3.0295, 7.2707], [-3.1472, 7.3549], [-3.6112, 7.1386], [-3.6224, 6.9942], [-3.6283, 6.8518], [-3.6289, 6.7115], [-3.624, 6.5735], [-3.6135, 6.4381], [-3.5971, 6.3056], [-3.5744, 6.1763], [-3.5448, 6.0507], [-3.5072, 5.9297], [-3.4577, 5.8155], [-2.8517, 4.7963]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-3.5317, 4.3202], [-4.2822, 5.2382], [-4.3726, 5.3237], [-4.4734, 5.4005], [-4.5813, 5.4713], [-4.695, 5.5368], [-4.814, 5.5976], [-4.9376, 5.6537], [-5.0656, 5.7055], [-5.1976, 5.7529], [-5.3335, 5.7961], [-5.473, 5.8349], [-5.8349, 5.473], [-5.7961, 5.3335], [-5.7529, 5.1976], [-5.7055, 5.0656], [-5.6537, 4.9376], [-5.5976, 4.814], [-5.5368, 4.695], [-5.4713, 4.5813], [-5.4005, 4.4734], [-5.3237, 4.3726], [-5.2382, 4.2822], [-4.3202, 3.5317]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-4.7963, 2.8517], [-5.8155, 3.4577], [-5.9297, 3.5072], [-6.0507, 3.5448], [-6.1763, 3.5744], [-6.3056, 3.5971], [-6.4381, 3.6135], [-6.5735, 3.624], [-6.7115, 3.6289], [-6.8518, 3.6283], [-6.9942, 3.6224], [-7.1386, 3.6112], [-7.3549, 3.1472], [-7.2707, 3.0295], [-7.1837, 2.9165], [-7.094, 2.8087], [-7.0015, 2.7061], [-6.9065, 2.6092], [-6.8087, 2.5182], [-6.7082, 2.4337], [-6.6048, 2.3565], [-6.4982, 2.288], [-6.3869, 2.2323], [-5.2675, 1.8411]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-5.4824, 1.0393], [-6.6474, 1.2602], [-6.7716, 1.2676], [-6.8982, 1.2616], [-7.0263, 1.2465], [-7.1556, 1.2235], [-7.2858, 1.1936], [-7.4166, 1.1572], [-7.5479, 1.1146], [-7.6795, 1.066], [-7.8113, 1.0118], [-7.9432, 0.9519], [-7.9878, 0.4419], [-7.8683, 0.36], [-7.748, 0.2837], [-7.6268, 0.213], [-7.5049, 0.1483], [-7.3823, 0.0897], [-7.2594, 0.0376], [-7.136, -0.0074], [-7.0125, -0.0446], [-6.8888, -0.0725], [-6.7652, -0.0867], [-5.5795, -0.0715]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-5.5072, -0.8984], [-6.6775, -1.0893], [-6.7968, -1.1249], [-6.9137, -1.1738], [-7.0289, -1.2319], [-7.1426, -1.2976], [-7.2546, -1.3702], [-7.3651, -1.4492], [-7.4739, -1.5342], [-7.581, -1.6248], [-7.6863, -1.7209], [-7.7897, -1.8223], [-7.6572, -2.3167], [-7.517, -2.3528], [-7.3777, -2.3834], [-7.2397, -2.4083], [-7.103, -2.4275], [-6.9678, -2.4406], [-6.8344, -2.4475], [-6.7032, -2.4476], [-6.5743, -2.4403], [-6.4486, -2.4242], [-6.3276, -2.3954], [-5.2186, -1.9755]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-4.8678, -2.7278], [-5.9022, -3.3075], [-6.0021, -3.3817], [-6.0953, -3.4676], [-6.1837, -3.5616], [-6.268, -3.6623], [-6.3485, -3.7688], [-6.4253, -3.8808], [-6.4985, -3.9979], [-6.5681, -4.1197], [-6.6342, -4.246], [-6.6967, -4.3766], [-6.4031, -4.7959], [-6.2589, -4.7819], [-6.1176, -4.763], [-5.9794, -4.7392], [-5.8444, -4.7104], [-5.7128, -4.6766], [-5.5852, -4.6374], [-5.4618, -4.5926], [-5.3432, -4.5417], [-5.2306, -4.4836], [-5.1267, -4.4151], [-4.2282, -3.6413]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-3.6413, -4.2282], [-4.4151, -5.1267], [-4.4836, -5.2306], [-4.5417, -5.3432], [-4.5926, -5.4618], [-4.6374, -5.5852], [-4.6766, -5.7128], [-4.7104, -5.8444], [-4.7392, -5.9794], [-4.763, -6.1176], [-4.7819, -6.2589], [-4.7959, -6.4031], [-4.3766, -6.6967], [-4.246, -6.6342], [-4.1197, -6.5681], [-3.9979, -6.4985], [-3.8808, -6.4253], [-3.7688, -6.3485], [-3.6623, -6.268], [-3.5616, -6.1837], [-3.4676, -6.0953], [-3.3817, -6.0021], [-3.3075, -5.9022], [-2.7278, -4.8678]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
      - {kind: poly, points: [[-1.9755, -5.2186], [-2.3954, -6.3276], [-2.4242, -6.4486], [-2.4403, -6.5743], [-2.4476, -6.7032], [-2.4475, -6.8344], [-2.4406, -6.9678], [-2.4275, -7.103], [-2.4083, -7.2397], [-2.3834, -7.3777], [-2.3528, -7.517], [-2.3167, -7.6572], [-1.8223, -7.7897], [-1.7209, -7.6863], [-1.6248, -7.581], [-1.5342, -7.4739], [-1.4492, -7.3651], [-1.3702, -7.2546], [-1.2976, -7.1426], [-1.2319, -7.0289], [-1.1738, -6.9137], [-1.1249, -6.7968], [-1.0893, -6.6775], [-0.8984, -5.5072]], y: [-0.6400000000000001, 0.6400000000000001], collide: 2}
  - id: worm
    shape: part
    pos: [0, 0, -9.76]
    mount: frame
    density: 7800
    friction: 0.1
    color: "#e4d9bf"
    pieces:
      - {kind: rod, from: [-4.3699, 0, -9.76], to: [4.3699, 0, -9.76], radius: 1.61, collide: 0}
      - {kind: loft, a: [[-4.6302, 1.56, -9.76], [-2.9096, 1.56, -9.76], [-3.5648, 3.36, -9.76], [-3.9751, 3.36, -9.76]], b: [[-4.5255, 1.5068, -9.3562], [-2.8049, 1.5068, -9.3562], [-3.46, 3.2455, -8.8904], [-3.8703, 3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[-4.5255, 1.5068, -9.3562], [-2.8049, 1.5068, -9.3562], [-3.46, 3.2455, -8.8904], [-3.8703, 3.2455, -8.8904]], b: [[-4.4208, 1.351, -8.98], [-2.7002, 1.351, -8.98], [-3.3553, 2.9098, -8.08], [-3.7656, 2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[-4.4208, 1.351, -8.98], [-2.7002, 1.351, -8.98], [-3.3553, 2.9098, -8.08], [-3.7656, 2.9098, -8.08]], b: [[-4.316, 1.1031, -8.6569], [-2.5955, 1.1031, -8.6569], [-3.2506, 2.3759, -7.3841], [-3.6609, 2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[-4.316, 1.1031, -8.6569], [-2.5955, 1.1031, -8.6569], [-3.2506, 2.3759, -7.3841], [-3.6609, 2.3759, -7.3841]], b: [[-4.2113, 0.78, -8.409], [-2.4907, 0.78, -8.409], [-3.1459, 1.68, -6.8502], [-3.5562, 1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[-4.2113, 0.78, -8.409], [-2.4907, 0.78, -8.409], [-3.1459, 1.68, -6.8502], [-3.5562, 1.68, -6.8502]], b: [[-4.1066, 0.4038, -8.2532], [-2.386, 0.4038, -8.2532], [-3.0412, 0.8696, -6.5145], [-3.4515, 0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[-4.1066, 0.4038, -8.2532], [-2.386, 0.4038, -8.2532], [-3.0412, 0.8696, -6.5145], [-3.4515, 0.8696, -6.5145]], b: [[-4.0019, 0.0, -8.2], [-2.2813, 0.0, -8.2], [-2.9365, 0.0, -6.4], [-3.3467, 0.0, -6.4]], collide: 1}
      - {kind: loft, a: [[-4.0019, 0.0, -8.2], [-2.2813, 0.0, -8.2], [-2.9365, 0.0, -6.4], [-3.3467, 0.0, -6.4]], b: [[-3.8972, -0.4038, -8.2532], [-2.1766, -0.4038, -8.2532], [-2.8317, -0.8696, -6.5145], [-3.242, -0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[-3.8972, -0.4038, -8.2532], [-2.1766, -0.4038, -8.2532], [-2.8317, -0.8696, -6.5145], [-3.242, -0.8696, -6.5145]], b: [[-3.7924, -0.78, -8.409], [-2.0719, -0.78, -8.409], [-2.727, -1.68, -6.8502], [-3.1373, -1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[-3.7924, -0.78, -8.409], [-2.0719, -0.78, -8.409], [-2.727, -1.68, -6.8502], [-3.1373, -1.68, -6.8502]], b: [[-3.6877, -1.1031, -8.6569], [-1.9671, -1.1031, -8.6569], [-2.6223, -2.3759, -7.3841], [-3.0326, -2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[-3.6877, -1.1031, -8.6569], [-1.9671, -1.1031, -8.6569], [-2.6223, -2.3759, -7.3841], [-3.0326, -2.3759, -7.3841]], b: [[-3.583, -1.351, -8.98], [-1.8624, -1.351, -8.98], [-2.5176, -2.9098, -8.08], [-2.9279, -2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[-3.583, -1.351, -8.98], [-1.8624, -1.351, -8.98], [-2.5176, -2.9098, -8.08], [-2.9279, -2.9098, -8.08]], b: [[-3.4783, -1.5068, -9.3562], [-1.7577, -1.5068, -9.3562], [-2.4129, -3.2455, -8.8904], [-2.8231, -3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[-3.4783, -1.5068, -9.3562], [-1.7577, -1.5068, -9.3562], [-2.4129, -3.2455, -8.8904], [-2.8231, -3.2455, -8.8904]], b: [[-3.3736, -1.56, -9.76], [-1.653, -1.56, -9.76], [-2.3081, -3.36, -9.76], [-2.7184, -3.36, -9.76]], collide: 1}
      - {kind: loft, a: [[-3.3736, -1.56, -9.76], [-1.653, -1.56, -9.76], [-2.3081, -3.36, -9.76], [-2.7184, -3.36, -9.76]], b: [[-3.2688, -1.5068, -10.1638], [-1.5483, -1.5068, -10.1638], [-2.2034, -3.2455, -10.6296], [-2.6137, -3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[-3.2688, -1.5068, -10.1638], [-1.5483, -1.5068, -10.1638], [-2.2034, -3.2455, -10.6296], [-2.6137, -3.2455, -10.6296]], b: [[-3.1641, -1.351, -10.54], [-1.4435, -1.351, -10.54], [-2.0987, -2.9098, -11.44], [-2.509, -2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[-3.1641, -1.351, -10.54], [-1.4435, -1.351, -10.54], [-2.0987, -2.9098, -11.44], [-2.509, -2.9098, -11.44]], b: [[-3.0594, -1.1031, -10.8631], [-1.3388, -1.1031, -10.8631], [-1.994, -2.3759, -12.1359], [-2.4043, -2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[-3.0594, -1.1031, -10.8631], [-1.3388, -1.1031, -10.8631], [-1.994, -2.3759, -12.1359], [-2.4043, -2.3759, -12.1359]], b: [[-2.9547, -0.78, -11.111], [-1.2341, -0.78, -11.111], [-1.8893, -1.68, -12.6698], [-2.2995, -1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[-2.9547, -0.78, -11.111], [-1.2341, -0.78, -11.111], [-1.8893, -1.68, -12.6698], [-2.2995, -1.68, -12.6698]], b: [[-2.85, -0.4038, -11.2668], [-1.1294, -0.4038, -11.2668], [-1.7845, -0.8696, -13.0055], [-2.1948, -0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[-2.85, -0.4038, -11.2668], [-1.1294, -0.4038, -11.2668], [-1.7845, -0.8696, -13.0055], [-2.1948, -0.8696, -13.0055]], b: [[-2.7452, -0.0, -11.32], [-1.0247, -0.0, -11.32], [-1.6798, -0.0, -13.12], [-2.0901, -0.0, -13.12]], collide: 1}
      - {kind: loft, a: [[-2.7452, -0.0, -11.32], [-1.0247, -0.0, -11.32], [-1.6798, -0.0, -13.12], [-2.0901, -0.0, -13.12]], b: [[-2.6405, 0.4038, -11.2668], [-0.9199, 0.4038, -11.2668], [-1.5751, 0.8696, -13.0055], [-1.9854, 0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[-2.6405, 0.4038, -11.2668], [-0.9199, 0.4038, -11.2668], [-1.5751, 0.8696, -13.0055], [-1.9854, 0.8696, -13.0055]], b: [[-2.5358, 0.78, -11.111], [-0.8152, 0.78, -11.111], [-1.4704, 1.68, -12.6698], [-1.8807, 1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[-2.5358, 0.78, -11.111], [-0.8152, 0.78, -11.111], [-1.4704, 1.68, -12.6698], [-1.8807, 1.68, -12.6698]], b: [[-2.4311, 1.1031, -10.8631], [-0.7105, 1.1031, -10.8631], [-1.3657, 2.3759, -12.1359], [-1.7759, 2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[-2.4311, 1.1031, -10.8631], [-0.7105, 1.1031, -10.8631], [-1.3657, 2.3759, -12.1359], [-1.7759, 2.3759, -12.1359]], b: [[-2.3264, 1.351, -10.54], [-0.6058, 1.351, -10.54], [-1.2609, 2.9098, -11.44], [-1.6712, 2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[-2.3264, 1.351, -10.54], [-0.6058, 1.351, -10.54], [-1.2609, 2.9098, -11.44], [-1.6712, 2.9098, -11.44]], b: [[-2.2216, 1.5068, -10.1638], [-0.5011, 1.5068, -10.1638], [-1.1562, 3.2455, -10.6296], [-1.5665, 3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[-2.2216, 1.5068, -10.1638], [-0.5011, 1.5068, -10.1638], [-1.1562, 3.2455, -10.6296], [-1.5665, 3.2455, -10.6296]], b: [[-2.1169, 1.56, -9.76], [-0.3963, 1.56, -9.76], [-1.0515, 3.36, -9.76], [-1.4618, 3.36, -9.76]], collide: 1}
      - {kind: loft, a: [[-2.1169, 1.56, -9.76], [-0.3963, 1.56, -9.76], [-1.0515, 3.36, -9.76], [-1.4618, 3.36, -9.76]], b: [[-2.0122, 1.5068, -9.3562], [-0.2916, 1.5068, -9.3562], [-0.9468, 3.2455, -8.8904], [-1.3571, 3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[-2.0122, 1.5068, -9.3562], [-0.2916, 1.5068, -9.3562], [-0.9468, 3.2455, -8.8904], [-1.3571, 3.2455, -8.8904]], b: [[-1.9075, 1.351, -8.98], [-0.1869, 1.351, -8.98], [-0.8421, 2.9098, -8.08], [-1.2523, 2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[-1.9075, 1.351, -8.98], [-0.1869, 1.351, -8.98], [-0.8421, 2.9098, -8.08], [-1.2523, 2.9098, -8.08]], b: [[-1.8028, 1.1031, -8.6569], [-0.0822, 1.1031, -8.6569], [-0.7373, 2.3759, -7.3841], [-1.1476, 2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[-1.8028, 1.1031, -8.6569], [-0.0822, 1.1031, -8.6569], [-0.7373, 2.3759, -7.3841], [-1.1476, 2.3759, -7.3841]], b: [[-1.698, 0.78, -8.409], [0.0225, 0.78, -8.409], [-0.6326, 1.68, -6.8502], [-1.0429, 1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[-1.698, 0.78, -8.409], [0.0225, 0.78, -8.409], [-0.6326, 1.68, -6.8502], [-1.0429, 1.68, -6.8502]], b: [[-1.5933, 0.4038, -8.2532], [0.1273, 0.4038, -8.2532], [-0.5279, 0.8696, -6.5145], [-0.9382, 0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[-1.5933, 0.4038, -8.2532], [0.1273, 0.4038, -8.2532], [-0.5279, 0.8696, -6.5145], [-0.9382, 0.8696, -6.5145]], b: [[-1.4886, 0.0, -8.2], [0.232, 0.0, -8.2], [-0.4232, 0.0, -6.4], [-0.8335, 0.0, -6.4]], collide: 1}
      - {kind: loft, a: [[-1.4886, 0.0, -8.2], [0.232, 0.0, -8.2], [-0.4232, 0.0, -6.4], [-0.8335, 0.0, -6.4]], b: [[-1.3839, -0.4038, -8.2532], [0.3367, -0.4038, -8.2532], [-0.3185, -0.8696, -6.5145], [-0.7287, -0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[-1.3839, -0.4038, -8.2532], [0.3367, -0.4038, -8.2532], [-0.3185, -0.8696, -6.5145], [-0.7287, -0.8696, -6.5145]], b: [[-1.2792, -0.78, -8.409], [0.4414, -0.78, -8.409], [-0.2137, -1.68, -6.8502], [-0.624, -1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[-1.2792, -0.78, -8.409], [0.4414, -0.78, -8.409], [-0.2137, -1.68, -6.8502], [-0.624, -1.68, -6.8502]], b: [[-1.1744, -1.1031, -8.6569], [0.5461, -1.1031, -8.6569], [-0.109, -2.3759, -7.3841], [-0.5193, -2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[-1.1744, -1.1031, -8.6569], [0.5461, -1.1031, -8.6569], [-0.109, -2.3759, -7.3841], [-0.5193, -2.3759, -7.3841]], b: [[-1.0697, -1.351, -8.98], [0.6508, -1.351, -8.98], [-0.0043, -2.9098, -8.08], [-0.4146, -2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[-1.0697, -1.351, -8.98], [0.6508, -1.351, -8.98], [-0.0043, -2.9098, -8.08], [-0.4146, -2.9098, -8.08]], b: [[-0.965, -1.5068, -9.3562], [0.7556, -1.5068, -9.3562], [0.1004, -3.2455, -8.8904], [-0.3099, -3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[-0.965, -1.5068, -9.3562], [0.7556, -1.5068, -9.3562], [0.1004, -3.2455, -8.8904], [-0.3099, -3.2455, -8.8904]], b: [[-0.8603, -1.56, -9.76], [0.8603, -1.56, -9.76], [0.2051, -3.36, -9.76], [-0.2051, -3.36, -9.76]], collide: 1}
      - {kind: loft, a: [[-0.8603, -1.56, -9.76], [0.8603, -1.56, -9.76], [0.2051, -3.36, -9.76], [-0.2051, -3.36, -9.76]], b: [[-0.7556, -1.5068, -10.1638], [0.965, -1.5068, -10.1638], [0.3099, -3.2455, -10.6296], [-0.1004, -3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[-0.7556, -1.5068, -10.1638], [0.965, -1.5068, -10.1638], [0.3099, -3.2455, -10.6296], [-0.1004, -3.2455, -10.6296]], b: [[-0.6508, -1.351, -10.54], [1.0697, -1.351, -10.54], [0.4146, -2.9098, -11.44], [0.0043, -2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[-0.6508, -1.351, -10.54], [1.0697, -1.351, -10.54], [0.4146, -2.9098, -11.44], [0.0043, -2.9098, -11.44]], b: [[-0.5461, -1.1031, -10.8631], [1.1744, -1.1031, -10.8631], [0.5193, -2.3759, -12.1359], [0.109, -2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[-0.5461, -1.1031, -10.8631], [1.1744, -1.1031, -10.8631], [0.5193, -2.3759, -12.1359], [0.109, -2.3759, -12.1359]], b: [[-0.4414, -0.78, -11.111], [1.2792, -0.78, -11.111], [0.624, -1.68, -12.6698], [0.2137, -1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[-0.4414, -0.78, -11.111], [1.2792, -0.78, -11.111], [0.624, -1.68, -12.6698], [0.2137, -1.68, -12.6698]], b: [[-0.3367, -0.4038, -11.2668], [1.3839, -0.4038, -11.2668], [0.7287, -0.8696, -13.0055], [0.3185, -0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[-0.3367, -0.4038, -11.2668], [1.3839, -0.4038, -11.2668], [0.7287, -0.8696, -13.0055], [0.3185, -0.8696, -13.0055]], b: [[-0.232, -0.0, -11.32], [1.4886, -0.0, -11.32], [0.8335, -0.0, -13.12], [0.4232, -0.0, -13.12]], collide: 1}
      - {kind: loft, a: [[-0.232, -0.0, -11.32], [1.4886, -0.0, -11.32], [0.8335, -0.0, -13.12], [0.4232, -0.0, -13.12]], b: [[-0.1273, 0.4038, -11.2668], [1.5933, 0.4038, -11.2668], [0.9382, 0.8696, -13.0055], [0.5279, 0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[-0.1273, 0.4038, -11.2668], [1.5933, 0.4038, -11.2668], [0.9382, 0.8696, -13.0055], [0.5279, 0.8696, -13.0055]], b: [[-0.0225, 0.78, -11.111], [1.698, 0.78, -11.111], [1.0429, 1.68, -12.6698], [0.6326, 1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[-0.0225, 0.78, -11.111], [1.698, 0.78, -11.111], [1.0429, 1.68, -12.6698], [0.6326, 1.68, -12.6698]], b: [[0.0822, 1.1031, -10.8631], [1.8028, 1.1031, -10.8631], [1.1476, 2.3759, -12.1359], [0.7373, 2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[0.0822, 1.1031, -10.8631], [1.8028, 1.1031, -10.8631], [1.1476, 2.3759, -12.1359], [0.7373, 2.3759, -12.1359]], b: [[0.1869, 1.351, -10.54], [1.9075, 1.351, -10.54], [1.2523, 2.9098, -11.44], [0.8421, 2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[0.1869, 1.351, -10.54], [1.9075, 1.351, -10.54], [1.2523, 2.9098, -11.44], [0.8421, 2.9098, -11.44]], b: [[0.2916, 1.5068, -10.1638], [2.0122, 1.5068, -10.1638], [1.3571, 3.2455, -10.6296], [0.9468, 3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[0.2916, 1.5068, -10.1638], [2.0122, 1.5068, -10.1638], [1.3571, 3.2455, -10.6296], [0.9468, 3.2455, -10.6296]], b: [[0.3963, 1.56, -9.76], [2.1169, 1.56, -9.76], [1.4618, 3.36, -9.76], [1.0515, 3.36, -9.76]], collide: 1}
      - {kind: loft, a: [[0.3963, 1.56, -9.76], [2.1169, 1.56, -9.76], [1.4618, 3.36, -9.76], [1.0515, 3.36, -9.76]], b: [[0.5011, 1.5068, -9.3562], [2.2216, 1.5068, -9.3562], [1.5665, 3.2455, -8.8904], [1.1562, 3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[0.5011, 1.5068, -9.3562], [2.2216, 1.5068, -9.3562], [1.5665, 3.2455, -8.8904], [1.1562, 3.2455, -8.8904]], b: [[0.6058, 1.351, -8.98], [2.3264, 1.351, -8.98], [1.6712, 2.9098, -8.08], [1.2609, 2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[0.6058, 1.351, -8.98], [2.3264, 1.351, -8.98], [1.6712, 2.9098, -8.08], [1.2609, 2.9098, -8.08]], b: [[0.7105, 1.1031, -8.6569], [2.4311, 1.1031, -8.6569], [1.7759, 2.3759, -7.3841], [1.3657, 2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[0.7105, 1.1031, -8.6569], [2.4311, 1.1031, -8.6569], [1.7759, 2.3759, -7.3841], [1.3657, 2.3759, -7.3841]], b: [[0.8152, 0.78, -8.409], [2.5358, 0.78, -8.409], [1.8807, 1.68, -6.8502], [1.4704, 1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[0.8152, 0.78, -8.409], [2.5358, 0.78, -8.409], [1.8807, 1.68, -6.8502], [1.4704, 1.68, -6.8502]], b: [[0.9199, 0.4038, -8.2532], [2.6405, 0.4038, -8.2532], [1.9854, 0.8696, -6.5145], [1.5751, 0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[0.9199, 0.4038, -8.2532], [2.6405, 0.4038, -8.2532], [1.9854, 0.8696, -6.5145], [1.5751, 0.8696, -6.5145]], b: [[1.0247, 0.0, -8.2], [2.7452, 0.0, -8.2], [2.0901, 0.0, -6.4], [1.6798, 0.0, -6.4]], collide: 1}
      - {kind: loft, a: [[1.0247, 0.0, -8.2], [2.7452, 0.0, -8.2], [2.0901, 0.0, -6.4], [1.6798, 0.0, -6.4]], b: [[1.1294, -0.4038, -8.2532], [2.85, -0.4038, -8.2532], [2.1948, -0.8696, -6.5145], [1.7845, -0.8696, -6.5145]], collide: 1}
      - {kind: loft, a: [[1.1294, -0.4038, -8.2532], [2.85, -0.4038, -8.2532], [2.1948, -0.8696, -6.5145], [1.7845, -0.8696, -6.5145]], b: [[1.2341, -0.78, -8.409], [2.9547, -0.78, -8.409], [2.2995, -1.68, -6.8502], [1.8893, -1.68, -6.8502]], collide: 1}
      - {kind: loft, a: [[1.2341, -0.78, -8.409], [2.9547, -0.78, -8.409], [2.2995, -1.68, -6.8502], [1.8893, -1.68, -6.8502]], b: [[1.3388, -1.1031, -8.6569], [3.0594, -1.1031, -8.6569], [2.4043, -2.3759, -7.3841], [1.994, -2.3759, -7.3841]], collide: 1}
      - {kind: loft, a: [[1.3388, -1.1031, -8.6569], [3.0594, -1.1031, -8.6569], [2.4043, -2.3759, -7.3841], [1.994, -2.3759, -7.3841]], b: [[1.4435, -1.351, -8.98], [3.1641, -1.351, -8.98], [2.509, -2.9098, -8.08], [2.0987, -2.9098, -8.08]], collide: 1}
      - {kind: loft, a: [[1.4435, -1.351, -8.98], [3.1641, -1.351, -8.98], [2.509, -2.9098, -8.08], [2.0987, -2.9098, -8.08]], b: [[1.5483, -1.5068, -9.3562], [3.2688, -1.5068, -9.3562], [2.6137, -3.2455, -8.8904], [2.2034, -3.2455, -8.8904]], collide: 1}
      - {kind: loft, a: [[1.5483, -1.5068, -9.3562], [3.2688, -1.5068, -9.3562], [2.6137, -3.2455, -8.8904], [2.2034, -3.2455, -8.8904]], b: [[1.653, -1.56, -9.76], [3.3736, -1.56, -9.76], [2.7184, -3.36, -9.76], [2.3081, -3.36, -9.76]], collide: 1}
      - {kind: loft, a: [[1.653, -1.56, -9.76], [3.3736, -1.56, -9.76], [2.7184, -3.36, -9.76], [2.3081, -3.36, -9.76]], b: [[1.7577, -1.5068, -10.1638], [3.4783, -1.5068, -10.1638], [2.8231, -3.2455, -10.6296], [2.4129, -3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[1.7577, -1.5068, -10.1638], [3.4783, -1.5068, -10.1638], [2.8231, -3.2455, -10.6296], [2.4129, -3.2455, -10.6296]], b: [[1.8624, -1.351, -10.54], [3.583, -1.351, -10.54], [2.9279, -2.9098, -11.44], [2.5176, -2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[1.8624, -1.351, -10.54], [3.583, -1.351, -10.54], [2.9279, -2.9098, -11.44], [2.5176, -2.9098, -11.44]], b: [[1.9671, -1.1031, -10.8631], [3.6877, -1.1031, -10.8631], [3.0326, -2.3759, -12.1359], [2.6223, -2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[1.9671, -1.1031, -10.8631], [3.6877, -1.1031, -10.8631], [3.0326, -2.3759, -12.1359], [2.6223, -2.3759, -12.1359]], b: [[2.0719, -0.78, -11.111], [3.7924, -0.78, -11.111], [3.1373, -1.68, -12.6698], [2.727, -1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[2.0719, -0.78, -11.111], [3.7924, -0.78, -11.111], [3.1373, -1.68, -12.6698], [2.727, -1.68, -12.6698]], b: [[2.1766, -0.4038, -11.2668], [3.8972, -0.4038, -11.2668], [3.242, -0.8696, -13.0055], [2.8317, -0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[2.1766, -0.4038, -11.2668], [3.8972, -0.4038, -11.2668], [3.242, -0.8696, -13.0055], [2.8317, -0.8696, -13.0055]], b: [[2.2813, 0.0, -11.32], [4.0019, 0.0, -11.32], [3.3467, 0.0, -13.12], [2.9365, 0.0, -13.12]], collide: 1}
      - {kind: loft, a: [[2.2813, 0.0, -11.32], [4.0019, 0.0, -11.32], [3.3467, 0.0, -13.12], [2.9365, 0.0, -13.12]], b: [[2.386, 0.4038, -11.2668], [4.1066, 0.4038, -11.2668], [3.4515, 0.8696, -13.0055], [3.0412, 0.8696, -13.0055]], collide: 1}
      - {kind: loft, a: [[2.386, 0.4038, -11.2668], [4.1066, 0.4038, -11.2668], [3.4515, 0.8696, -13.0055], [3.0412, 0.8696, -13.0055]], b: [[2.4907, 0.78, -11.111], [4.2113, 0.78, -11.111], [3.5562, 1.68, -12.6698], [3.1459, 1.68, -12.6698]], collide: 1}
      - {kind: loft, a: [[2.4907, 0.78, -11.111], [4.2113, 0.78, -11.111], [3.5562, 1.68, -12.6698], [3.1459, 1.68, -12.6698]], b: [[2.5955, 1.1031, -10.8631], [4.316, 1.1031, -10.8631], [3.6609, 2.3759, -12.1359], [3.2506, 2.3759, -12.1359]], collide: 1}
      - {kind: loft, a: [[2.5955, 1.1031, -10.8631], [4.316, 1.1031, -10.8631], [3.6609, 2.3759, -12.1359], [3.2506, 2.3759, -12.1359]], b: [[2.7002, 1.351, -10.54], [4.4208, 1.351, -10.54], [3.7656, 2.9098, -11.44], [3.3553, 2.9098, -11.44]], collide: 1}
      - {kind: loft, a: [[2.7002, 1.351, -10.54], [4.4208, 1.351, -10.54], [3.7656, 2.9098, -11.44], [3.3553, 2.9098, -11.44]], b: [[2.8049, 1.5068, -10.1638], [4.5255, 1.5068, -10.1638], [3.8703, 3.2455, -10.6296], [3.46, 3.2455, -10.6296]], collide: 1}
      - {kind: loft, a: [[2.8049, 1.5068, -10.1638], [4.5255, 1.5068, -10.1638], [3.8703, 3.2455, -10.6296], [3.46, 3.2455, -10.6296]], b: [[2.9096, 1.56, -9.76], [4.6302, 1.56, -9.76], [3.9751, 3.36, -9.76], [3.5648, 3.36, -9.76]], collide: 1}
  - id: conrod
    shape: part
    pos: [0.0, 0, 4.5]
    mount: wheel
    mass: 0.1
    color: "#c4baa2"
    pieces:
      - {kind: poly, points: [[0.0806, 5.145], [36.0806, 0.645], [35.9194, -0.645], [-0.0806, 3.855]], y: [-2.1, -1.4], collide: 0, color: "#c4baa2"}
      - {kind: disc, center: [0.0, 4.5], radius: 1.0, inner: 0.3, y: [-2.1, -1.4]}
      - {kind: disc, center: [36.0, 0.0], radius: 1.0, inner: 0.3, y: [-2.1, -1.4]}
  - id: base
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#9b917c"
    pieces:
      - {kind: poly, points: [[-30.0, -17.66], [39.0, -17.66], [39.0, -16.06], [-30.0, -16.06]], y: [0.6, 3.0], collide: 0, color: "#9b917c"}
      - {kind: poly, points: [[36.0, -17.66], [39.0, -17.66], [39.0, 6.0], [36.0, 6.0]], y: [0.6, 3.0], collide: 0, color: "#9b917c"}
      - {kind: rod, from: [36.0, -1.4, 0.0], to: [36.0, 0.8, 0.0], radius: 0.6, color: "#8f8a80"}
      - {kind: rod, from: [-26, 0, -9.76], to: [26, 0, -9.76], radius: 0.5, color: "#a49f93", collide: 0}
joints:
  - {id: j_f, type: slide, body: frame, axis: [1, 0, 0], damping: 0.05}   # the traversing frame on its bar; + : to the right
  - {id: j_wh, type: hinge, body: wheel, axis: [0, 1, 0], damping: 0.01}               # the toothed wheel; + : clockwise
  - {id: j_wo, type: hinge, body: worm, axis: [1, 0, 0], damping: 0.001}               # the one driven joint: the worm turning with its shaft
  - {id: j_r, type: hinge, body: conrod, axis: [0, 1, 0], damping: 0.005}
pins:
  - {id: pin_f, a: conrod, b: base, at: [36.0, 0, 0.0]}
contact: {solref: [0.002, 1.0], solimp: [0.98, 0.99, 0.0002], margin: 0}
driver: {joint: j_wo, kind: velocity, rpm: 180.0, kv: 2.0, max_torque: 1.0}
checks:
  - {type: ratio, out: j_wh, in: j_wo, expect: 0.0556, tol: 0.002, settle_s: 1, window_s: 11.0}
  - {type: follow, out: j_f, in: j_wh, expect: 0.0438, tol: 0.0022, min_r2: 0.97, settle_s: 2.4, window_s: 1.0}
  - {type: follow, out: j_f, in: j_wh, expect: -0.0437, tol: 0.0022, min_r2: 0.97, settle_s: 5.6, window_s: 1.0}
  - {type: follow, out: j_f, in: j_wh, expect: 0.0438, tol: 0.0022, min_r2: 0.97, settle_s: 8.4, window_s: 1.0}
  - {type: follow, out: j_f, in: j_wh, expect: -0.0437, tol: 0.0022, min_r2: 0.97, settle_s: 11.6, window_s: 1.0}
  - {type: follow, out: j_f, in: j_wh, expect: -0.0418, tol: 0.0021, min_r2: 0.97, settle_s: 6.0, window_s: 1.0}
  - {type: position, joint: j_f, min: -5.1801, max: 4.6198, settle_s: 0.0, window_s: 12.0}
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [9.0, 0, -10.5], position: [9.0, -85.0, -10.5], fov: 34}
display:
  output: j_f
  labels: {j_wo: "Worm (driver)", j_wh: "Toothed wheel", j_f: "Traversing frame"}
  proof: {label: "Thread out of contact", sub: "the worm turns alone: the wheel and frame stand still"}

