// Foot-operated Trackball // Parameters $fn = 100; // Set the resolution of the curves // Base module base() { cylinder(h=5, r=40, $fn=100); } // Ball Holder module ballHolder() { translate([0, 0, 5]) difference() { cylinder(h=10, r=38, $fn=100); translate([0, 0, -1]) cylinder(h=12, r1=28, r2=38, $fn=100); } } // Trackball Ball module trackballBall() { translate([0, 0, 5]) sphere(20); } // Pedal module pedal() { translate([0, 0, -5]) cube([60, 60, 10]); } // Assembling the Trackball module trackball() { union() { base(); ballHolder(); translate([0, 0, 27]) trackballBall(); } } // Assembling the Foot-operated Trackball module footTrackball() { union() { trackball(); translate([40, 0, -15]) pedal(); } } // Render the Foot-operated Trackball footTrackball();