//Variables /* rc=radio de las esferas del cuerpo,minimo 5 nc=numero de esferas del cuerpo abajo dc=numero de esferas que se doblan alfa=angulo de curvatura del cuerpo re=radio de circunferencia del cuerpo que se dobla na=numero de esferas del cuerpo arriba rp=radio de los cilindros de las patas rpesf=radio de las esferas de las patas hp=altura cilindros de las patas xp,yp,zp=medidas del pie rb=radio de los cilindros de los brazos rbesf=radio de las esferas de los codos hb=altura de los cilindros de los brazos rmesf=radio de las esferas de las manos rd=rdio de los cilindros de los dedos hd=altura de los cilindros de los dedos rn=radio esfera de la nariz ro=radio cilindros de los ojos ho=altura cilindros de los ojos */ //Declaración de variables rc=5; nc=4; dc=3; alfa=90/dc; re=15; na=3; rp=3; rpesf=3; hp=7; xp=4; yp=14; zp=4; rb=2; rbesf=2; hb=7; rmesf=4; rd=1; hd1=2; hd2=2; hd3=3; hd4=2.5; hd5=1; rn=2; ro=1; ho=0.1; //esferas de abajo for (i=[0:nc]) translate ([-1*rc*1.75*i,0,0]) sphere(r=rc,center=true); //esferas que se doblan for(j=[0:dc]) { translate([0,0,re]) rotate([0,90,0]) translate([re*cos(j*alfa),0,re*sin(j*alfa)]) sphere(r=rc,center=true); } //esferas arriba for (k=[0:na]){ translate([0,0,k*rc*1.75]) translate([re,0,re]) sphere(r=rc,center=true); } //patas 1 module patas() { for (i2=[0:nc]) { //muslo translate ([-1*rc*1.75*i2,0,0]) translate([0,-1.5*rc,0]) rotate([90,0,0]) color([0,0,1]) cylinder(r1=rp,r2=rp,h=hp,center=true); //rodilla translate ([-1*rc*1.75*i2,0,0]) translate([0,(-1.5*rc)-2.5*rp,0]) sphere(r=rpesf, $fn=100); //pierna translate ([-1*rc*1.75*i2,0,0]) translate([0,(-1.5*rc)-2.5*rp,-(hp/2)-rpesf]) color([0,0,1]) cylinder(r1=rp,r2=rp,h=hp,center=true); //pie translate ([-1*rc*1.75*i2,0,0]) translate([0,(-1.5*rc)-2.5*rp-(yp/2-rp),-hp-rpesf-(zp/2)]) color([0,1,0]) cube([xp,yp,zp],center=true); }} patas(); mirror([0,1,0]) patas(); //brazos 1 module brazos() { for (i3=[0:(na-2)]) { //brazo translate ([0,0,rc*1.75*i3]) translate([0,-1.5*rc,0]) rotate([90,0,0]) color([0,0,1]) cylinder(r1=rb,r2=rb,h=hb,center=true); //codo translate ([0,0,rc*1.75*i3]) translate([0,(-1.5*rc)-2.5*rb,0]) sphere(r=rbesf, $fn=100); //antebrazo translate ([0,0,rc*1.75*i3]) translate([(hb/2)+rbesf,(-1.5*rc)-2.5*rb,0]) rotate([0,-90,0]) color([0,0,1]) cylinder(r1=rb,r2=rb,h=hb,center=true); translate ([0,0,rc*1.75*i3]) translate([hb+rbesf+rmesf,(-1.5*rc)-2.5*rb,0]) color([1,1,1]) sphere(r=rmesf,center=true); }} translate([re,0,re]) brazos(); translate([re,0,re]) mirror([0,1,0]) brazos(); //dedos module dedos(){ //meñique translate([0.5*rmesf,0,-2.5*rd]) rotate([0,90,0]) color([1,0,0]) cylinder(r1=rd,r3=rd,h=hd1); //anular translate([0.8*rmesf,0,-1.2*rd]) rotate([0,90,0]) color([1,0,0]) cylinder(r1=rd,r3=rd,h=hd2); //corazon translate([0.8*rmesf+hd3/15,0,0.1*rd]) rotate([0,90,0]) color([1,0,0]) cylinder(r1=rd,r3=rd,h=hd3); //indice translate([0.8*rmesf,0,1.4*rd]) rotate([0,90,0]) color([1,0,0]) cylinder(r1=rd,r3=rd,h=hd4); //pulgar translate([0.3*rmesf,0,0.9*rmesf]) rotate([0,30,0]) color([1,0,0]) cylinder(r1=rd,r3=rd,h=hd5);} for (i4=[0:(na-2)]) translate ([re,0,rc*1.75*i4+re]) translate([hb+rbesf+rmesf,(-1.5*rc)-2.5*rb,0]) dedos(); mirror([0,1,0]){ for (i4=[0:(na-2)]) translate ([re,0,rc*1.75*i4+re]) translate([hb+rbesf+rmesf,(-1.5*rc)-2.5*rb,0]) dedos();} //nariz translate([re+rc,0,re+rc*1.75*na]) color([1,0,0]) sphere(r=rn,$fn=100,center=true); //ojos translate([re+0.75*rc,-0.5*rc,re+rc*2*na]) rotate([0,-90,0]) color([0,0,0]) cylinder(r1=ro,r2=ro,h=ho,$fn=100); translate([re+0.75*rc,0.5*rc,re+rc*2*na]) rotate([0,-90,0]) color([0,0,0]) cylinder(r1=ro,r2=ro,h=ho,$fn=100);