You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.5 KiB
85 lines
3.5 KiB
/*
|
|
* Copyright 2022 Thomas Buck - thomas@xythobuz.de
|
|
* Philipp Schönberger - mail@phschoen.de
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* See <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
use <switch_holder_plate.scad>;
|
|
|
|
include <config.scad>;
|
|
include <constant.scad>;
|
|
|
|
for(i = [0:len(switch_config)])
|
|
switch_holder_plate(switch_config[i],switch_case_extra_width);
|
|
|
|
|
|
module line(c="blue",p1=[0,0,0],p2,d=1)
|
|
{
|
|
p1 = p1 *10;
|
|
p2 = p2 *10;
|
|
color(c)
|
|
hull() {
|
|
translate ( p1*2.54) sphere(d);
|
|
translate ( p2*2.54) sphere(d);
|
|
}
|
|
|
|
y = acos( (( p1*2.54)-( p2*2.54))[1] / sqrt( (( p1*2.54)-( p2*2.54))[0] *((p1*2.54)-( p2*2.54))[0] + ((p1*2.54)-( p2*2.54))[1]*((p1*2.54)-( p2*2.54))[1]));
|
|
x = acos( (( p1*2.54)-( p2*2.54))[1] / sqrt( (( p1*2.54)-( p2*2.54))[0] *((p1*2.54)-( p2*2.54))[0] + ((p1*2.54)-( p2*2.54))[1]*((p1*2.54)-( p2*2.54))[1]));
|
|
echo([ p2*2.54, [0,
|
|
atan((sqrt(
|
|
(
|
|
((p1-p2)*2.54 )[0]*((p1-p2)*2.54 )[0]
|
|
+
|
|
((p1-p2)*2.54 )[1]*((p1-p2)*2.54 )[1]
|
|
) )/
|
|
((p1-p2)*2.54 )[2] )),
|
|
atan( ((p1-p2)*2.54 )[1] /((p1-p2)*2.54 )[0] ) ]]);
|
|
}
|
|
|
|
|
|
|
|
for(f=[0:5])
|
|
for(i = switch_config[1][f])
|
|
color(i[3])
|
|
translate(i[0])
|
|
rotate(i[1])
|
|
{
|
|
cylinder(d=1, h =150);
|
|
}
|
|
// finger 1
|
|
line("red", [5.626412,4.890490,4.921143],[3.603139,5.951178,1.756010]);
|
|
line("red", [5.626412,4.890490,4.921143],[3.601304,5.185127,1.597157]);
|
|
line("red", [5.626412,4.859049,4.921143],[3.680820,4.407240,1.571830]);
|
|
line("red", [5.626412,4.890490,4.921143],[3.686250,6.574620,2.042010]);
|
|
// finger 2
|
|
line("green", [5.476960,5.040864,4.524379],[4.324486,6.084067,1.400235]);
|
|
line("green", [5.476960,5.040864,4.524379],[4.328402,5.307730,1.240122]);
|
|
line("green", [5.476960,5.040864,4.524379],[4.391585,4.517622,1.249485]);
|
|
line("green", [5.476960,5.040864,4.524379],[4.510779,3.754514,1.427841]);
|
|
line("green", [5.476960,5.040864,4.524379],[4.380041,6.806573,1.721562]);
|
|
line("blue", [5.614666,5.194831,3.515830],[5.065645,6.200934,1.067919]);
|
|
line("blue", [5.614666,5.194831,3.515830],[5.080251,5.408403,0.874860]);
|
|
line("blue", [5.614666,5.194831,3.515830],[5.143544,4.896416,0.922400]);
|
|
line("blue", [5.614666,5.194831,3.515830],[5.249757,3.838946,1.206208]);
|
|
line("blue", [5.614666,5.194831,3.515830],[5.101057,6.901806,1.483988]);
|
|
// finger 3
|
|
line("brown", [6.306084,5.091255,4.240877],[5.889712,6.192233,1.070680]);
|
|
line("brown", [6.306084,5.091255,4.240877],[5.915799,5.415294,0.897474]);
|
|
line("brown", [6.306084,5.091255,4.240877],[5.963534,4.620381,0.909720]);
|
|
line("brown", [6.306084,5.091255,4.240877],[6.030270,3.851587,1.106739]);
|
|
line("brown", [6.306084,5.091255,4.240877],[5.886720,6.908103,1.419731]);
|
|
// finger 4
|
|
line("gray", [7.085053,4.987385,4.453756],[6.736145,5.156350,0.989659]);
|
|
line("gray", [7.085053,4.987385,4.453756],[6.777004,4.371971,1.036648]);
|
|
line("gray", [7.085053,4.987385,4.453756],[6.708940,6.659750,1.418630]);
|
|
line("gray", [7.085053,4.987385,4.453756],[6.833560,3.618950,1.257760]);
|
|
line("cyan", [7.736480,5.132073,3.684937],[7.569335,6.085933,1.084243]);
|
|
line("cyan", [7.736480,5.132073,3.684937],[7.606606,5.316667,0.918996]);
|
|
line("cyan", [7.736480,5.132073,3.684937],[7.654340,4.532530,0.976580]);
|
|
line("cyan", [7.736480,5.132073,3.684937],[7.545530,6.778350,1.459020]);
|