/* Buckyballs - Molecular Models by pmoews Published on October 19, 2011 www.thingiverse.com/thing:12675 Creates a model of a molcule from a set of orthogonal coordinates Modified by Steven Sahyun Dec. 18, 2015 to have larger and rounder atom spheres. I also expanded model by a factor of 10x */ module atom(rx,x0,y0,z0) { translate(v=[x0,y0,z0]) sphere(r=rx,$fn=40); } /* spheres of radius rx are placed at the atomic positions - x0,y0,z0 */ module bond(x2,y2,z2,x1,y1,z1) { tx = (x2 + x1)/2; ty = (y2 + y1)/2; tz = (z2 + z1)/2; ax = x2 - x1 ; ay = y2 - y1; az = z2 - z1; translate(v=[tx,ty,tz]) // rotate command by d moews - rotate(a = [-acos(az/sqrt(ax*ax+ay*ay+az*az)), 0, -atan2(ax, ay)]) cylinder(r=3,h=sqrt(ax*ax+ay*ay+az*az),center=true,$fn=10); } // Atom Spere radius ra = 8; union() { atom(ra, 0.000000, 34.49997, 6.84800); // 1 atom(ra, 30.02716, 14.08493, -11.70975); // 2 atom(ra, 0.000000, -34.49997, 6.84800); // 3 atom(ra, 22.79007, -25.79483, -7.23694); // 4 atom(ra, -25.79483, -7.23694, 22.79007); // 5 atom(ra, -11.70975, -30.02716, 14.08493); // 6 atom(ra, -11.70975, 30.02716, 14.08493); // 7 atom(ra, -25.79483, 7.23694, 22.79007); // 8 atom(ra, 22.79007, 25.79483, -7.23694); // 9 atom(ra, 30.02716, -14.08493, -11.70975); // 10 atom(ra, -30.02716, -14.08493, -11.70975); // 11 atom(ra, -30.02716, 14.08493, -11.70975); // 12 atom(ra, -7.23694, 22.79007, -25.79483); // 13 atom(ra, 6.84800, 0.000000, -34.49997); // 14 atom(ra, -7.23694, -22.79007, -25.79483); // 15 atom(ra, -22.79007, 25.79483, -7.23694); // 16 atom(ra, 7.23694, 22.79007, -25.79483); // 17 atom(ra, 14.08493, -11.70975, -30.02716); // 18 atom(ra, -11.70975, -30.02716, -14.08493); // 19 atom(ra, -34.49997, -6.84800, 0.000000); // 20 atom(ra, 25.79483, 7.23694, 22.79007); // 21 atom(ra, 25.79483, -7.23694, 22.79007); // 22 atom(ra, 14.08493, -11.70975, 30.02716); // 23 atom(ra, 6.84800, 0.000000, 34.49997); // 24 atom(ra, 14.08493, 11.70975, 30.02716); // 25 atom(ra, 11.70975, 30.02716, 14.08493); // 26 atom(ra, 34.49997, 6.84800, 0.000000); // 27 atom(ra, 22.79007, -25.79483, 7.23694); // 28 atom(ra, -7.23694, -22.79007, 25.79483); // 29 atom(ra, -14.08493, 11.70975, 30.02716); // 30 atom(ra, 11.70975, -30.02716, 14.08493); // 31 atom(ra, -14.08493, -11.70975, 30.02716); // 32 atom(ra, -7.23694, 22.79007, 25.79483); // 33 atom(ra, 22.79007, 25.79483, 7.23694); // 34 atom(ra, 34.49997, -6.84800, 0.000000); // 35 atom(ra, -22.79007, -25.79483, -7.23694); // 36 atom(ra, -34.49997, 6.84800, 0.000000); // 37 atom(ra, -11.70975, 30.02716, -14.08493); // 38 atom(ra, 14.08493, 11.70975, -30.02716); // 39 atom(ra, 7.23694, -22.79007, -25.79483); // 40 atom(ra, -6.84800, 0.000000, -34.49997); // 41 atom(ra, -14.08493, -11.70975, -30.02716); // 42 atom(ra, -25.79483, -7.23694, -22.79007); // 43 atom(ra, -25.79483, 7.23694, -22.79007); // 44 atom(ra, -14.08493, 11.70975, -30.02716); // 45 atom(ra, 11.70975, 30.02716, -14.08493); // 46 atom(ra, 25.79483, -7.23694, -22.79007); // 47 atom(ra, 0.000000, -34.49997, -06.84800); // 48 atom(ra, -30.02716, -14.08493, 11.70975); // 49 atom(ra, -22.79007, 25.79483, 7.23694); // 50 atom(ra, -6.84800, 0.000000, 34.49997); // 51 atom(ra, 7.23694, 22.79007, 25.79483); // 52 atom(ra, 30.02716, 14.08493, 11.70975); // 53 atom(ra, 30.02716, -14.08493, 11.70975); // 54 atom(ra, 7.23694, -22.79007, 25.79483); // 55 atom(ra, -22.79007, -25.79483, 7.23694); // 56 atom(ra, -30.02716, 14.08493, 11.70975); // 57 atom(ra, 0.000000, 34.49997, -6.84800); // 58 atom(ra, 25.79483, 7.23694, -22.79007); // 59 atom(ra, 11.70975, -30.02716, -14.08493); // 60 bond( 0.000000, 34.49997, 6.84800, -11.70975, 30.02716, 14.08493); // 1 - 7 bond( 0.000000, 34.49997, 6.84800, 11.70975, 30.02716, 14.08493); // 1 - 26 bond( 0.000000, 34.49997, 6.84800, 0.000000, 34.49997, -6.84800); // 1 - 58 bond( 30.02716, 14.08493, -11.70975, 22.79007, 25.79483, -7.23694); // 2 - 9 bond( 30.02716, 14.08493, -11.70975, 34.49997, 6.84800, 0.000000); // 2 - 27 bond( 30.02716, 14.08493, -11.70975, 25.79483, 7.23694, -22.79007); // 2 - 59 bond( 0.000000, -34.49997, 6.84800, -11.70975, -30.02716, 14.08493); // 3 - 6 bond( 0.000000, -34.49997, 6.84800, 11.70975, -30.02716, 14.08493); // 3 - 31 bond( 0.000000, -34.49997, 6.84800, 0.000000, -34.49997, -6.84800); // 3 - 48 bond( 22.79007, -25.79483, -7.23694, 30.02716, -14.08493, -11.70975); // 4 - 10 bond( 22.79007, -25.79483, -7.23694, 22.79007, -25.79483, 7.23694); // 4 - 28 bond( 22.79007, -25.79483, -7.23694, 11.70975, -30.02716, -14.08493); // 4 - 60 bond( -25.79483, -7.23694, 22.79007, -25.79483, 7.23694, 22.79007); // 5 - 8 bond( -25.79483, -7.23694, 22.79007, -14.08493, -11.70975, 30.02716); // 5 - 32 bond( -25.79483, -7.23694, 22.79007, -30.02716, -14.08493, 11.70975); // 5 - 49 bond( -11.70975, -30.02716, 14.08493, -7.23694, -22.79007, 25.79483); // 6 - 29 bond( -11.70975, -30.02716, 14.08493, -22.79007, -25.79483, 7.23694); // 6 - 56 bond( -11.70975, 30.02716, 14.08493, -7.23694, 22.79007, 25.79483); // 7 - 33 bond( -11.70975, 30.02716, 14.08493, -22.79007, 25.79483, 7.23694); // 7 - 50 bond( -25.79483, 7.23694, 22.79007, -14.08493, 11.70975, 30.02716); // 8 - 30 bond( -25.79483, 7.23694, 22.79007, -30.02716, 14.08493, 11.70975); // 8 - 57 bond( 22.79007, 25.79483, -7.23694, 22.79007, 25.79483, 7.23694); // 9 - 34 bond( 22.79007, 25.79483, -7.23694, 11.70975, 30.02716, -14.08493); // 9 - 46 bond( 30.02716, -14.08493, -11.70975, 34.49997, -6.84800, 0.000000); // 10 - 35 bond( 30.02716, -14.08493, -11.70975, 25.79483, -7.23694, -22.79007); // 10 - 47 bond( -30.02716, -14.08493, -11.70975, -34.49997, -6.84800, 0.000000); // 11 - 20 bond( -30.02716, -14.08493, -11.70975, -22.79007, -25.79483, -7.23694); // 11 - 36 bond( -30.02716, -14.08493, -11.70975, -25.79483, -7.23694, -22.79007); // 11 - 43 bond( -30.02716, 14.08493, -11.70975, -22.79007, 25.79483, -7.23694); // 12 - 16 bond( -30.02716, 14.08493, -11.70975, -34.49997, 6.84800, 0.000000); // 12 - 37 bond( -30.02716, 14.08493, -11.70975, -25.79483, 7.23694, -22.79007); // 12 - 44 bond( -7.23694, 22.79007, -25.79483, 7.23694, 22.79007, -25.79483); // 13 - 17 bond( -7.23694, 22.79007, -25.79483, -11.70975, 30.02716, -14.08493); // 13 - 38 bond( -7.23694, 22.79007, -25.79483, -14.08493, 11.70975, -30.02716); // 13 - 45 bond( 6.84800, 0.000000, -34.49997, 14.08493, -11.70975, -30.02716); // 14 - 18 bond( 6.84800, 0.000000, -34.49997, 14.08493, 11.70975, -30.02716); // 14 - 39 bond( 6.84800, 0.000000, -34.49997, -6.84800, 0.000000, -34.49997); // 14 - 41 bond( -7.23694, -22.79007, -25.79483, -11.70975, -30.02716, -14.08493); // 15 - 19 bond( -7.23694, -22.79007, -25.79483, 7.23694, -22.79007, -25.79483); // 15 - 40 bond( -7.23694, -22.79007, -25.79483, -14.08493, -11.70975, -30.02716); // 15 - 42 bond( -22.79007, 25.79483, -7.23694, -11.70975, 30.02716, -14.08493); // 16 - 38 bond( -22.79007, 25.79483, -7.23694, -22.79007, 25.79483, 7.23694); // 16 - 50 bond( 7.23694, 22.79007, -25.79483, 14.08493, 11.70975, -30.02716); // 17 - 39 bond( 7.23694, 22.79007, -25.79483, 11.70975, 30.02716, -14.08493); // 17 - 46 bond( 14.08493, -11.70975, -30.02716, 7.23694, -22.79007, -25.79483); // 18 - 40 bond( 14.08493, -11.70975, -30.02716, 25.79483, -7.23694, -22.79007); // 18 - 47 bond( -11.70975, -30.02716, -14.08493, -22.79007, -25.79483, -7.23694); // 19 - 36 bond( -11.70975, -30.02716, -14.08493, 0.000000, -34.49997, -6.84800); // 19 - 48 bond( -34.49997, -6.84800, 0.000000, -34.49997, 6.84800, 0.000000); // 20 - 37 bond( -34.49997, -6.84800, 0.000000, -30.02716, -14.08493, 11.70975); // 20 - 49 bond( 25.79483, 7.23694, 22.79007, 25.79483, -7.23694, 22.79007); // 21 - 22 bond( 25.79483, 7.23694, 22.79007, 14.08493, 11.70975, 30.02716); // 21 - 25 bond( 25.79483, 7.23694, 22.79007, 30.02716, 14.08493, 11.70975); // 21 - 53 bond( 25.79483, -7.23694, 22.79007, 14.08493, -11.70975, 30.02716); // 22 - 23 bond( 25.79483, -7.23694, 22.79007, 30.02716, -14.08493, 11.70975); // 22 - 54 bond( 14.08493, -11.70975, 30.02716, 6.84800, 0.000000, 34.49997); // 23 - 24 bond( 14.08493, -11.70975, 30.02716, 7.23694, -22.79007, 25.79483); // 23 - 55 bond( 6.84800, 0.000000, 34.49997, 14.08493, 11.70975, 30.02716); // 24 - 25 bond( 6.84800, 0.000000, 34.49997, -6.84800, 0.000000, 34.49997); // 24 - 51 bond( 14.08493, 11.70975, 30.02716, 7.23694, 22.79007, 25.79483); // 25 - 52 bond( 11.70975, 30.02716, 14.08493, 22.79007, 25.79483, 7.23694); // 26 - 34 bond( 11.70975, 30.02716, 14.08493, 7.23694, 22.79007, 25.79483); // 26 - 52 bond( 34.49997, 6.84800, 0.000000, 34.49997, -6.84800, 0.000000); // 27 - 35 bond( 34.49997, 6.84800, 0.000000, 30.02716, 14.08493, 11.70975); // 27 - 53 bond( 22.79007, -25.79483, 7.23694, 11.70975, -30.02716, 14.08493); // 28 - 31 bond( 22.79007, -25.79483, 7.23694, 30.02716, -14.08493, 11.70975); // 28 - 54 bond( -7.23694, -22.79007, 25.79483, -14.08493, -11.70975, 30.02716); // 29 - 32 bond( -7.23694, -22.79007, 25.79483, 7.23694, -22.79007, 25.79483); // 29 - 55 bond( -14.08493, 11.70975, 30.02716, -7.23694, 22.79007, 25.79483); // 30 - 33 bond( -14.08493, 11.70975, 30.02716, -6.84800, 0.000000, 34.49997); // 30 - 51 bond( 11.70975, -30.02716, 14.08493, 7.23694, -22.79007, 25.79483); // 31 - 55 bond( -14.08493, -11.70975, 30.02716, -6.84800, 0.000000, 34.49997); // 32 - 51 bond( -7.23694, 22.79007, 25.79483, 7.23694, 22.79007, 25.79483); // 33 - 52 bond( 22.79007, 25.79483, 7.23694, 30.02716, 14.08493, 11.70975); // 34 - 53 bond( 34.49997, -6.84800, 0.000000, 30.02716, -14.08493, 11.70975); // 35 - 54 bond( -22.79007, -25.79483, -7.23694, -22.79007, -25.79483, 7.23694); // 36 - 56 bond( -34.49997, 6.84800, 0.000000, -30.02716, 14.08493, 11.70975); // 37 - 57 bond( -11.70975, 30.02716, -14.08493, 0.000000, 34.49997, -6.84800); // 38 - 58 bond( 14.08493, 11.70975, -30.02716, 25.79483, 7.23694, -22.79007); // 39 - 59 bond( 7.23694, -22.79007, -25.79483, 11.70975, -30.02716, -14.08493); // 40 - 60 bond( -6.84800, 0.000000, -34.49997, -14.08493, -11.70975, -30.02716); // 41 - 42 bond( -6.84800, 0.000000, -34.49997, -14.08493, 11.70975, -30.02716); // 41 - 45 bond( -14.08493, -11.70975, -30.02716, -25.79483, -7.23694, -22.79007); // 42 - 43 bond( -25.79483, -7.23694, -22.79007, -25.79483, 7.23694, -22.79007); // 43 - 44 bond( -25.79483, 7.23694, -22.79007, -14.08493, 11.70975, -30.02716); // 44 - 45 bond( 11.70975, 30.02716, -14.08493, 0.000000, 34.49997, -6.84800); // 46 - 58 bond( 25.79483, -7.23694, -22.79007, 25.79483, 7.23694, -22.79007); // 47 - 59 bond( 0.000000, -34.49997, -6.84800, 11.70975, -30.02716, -14.08493); // 48 - 60 bond( -30.02716, -14.08493, 11.70975, -22.79007, -25.79483, 7.23694); // 49 - 56 bond( -22.79007, 25.79483, 7.23694, -30.02716, 14.08493, 11.70975); // 50 - 57 } /* Orthogonal coordinates of buckyball 60 60 C 1 0.000000 3.449997 0.684800 1 7 26 58 C 2 3.002716 1.408493 -1.170975 1 9 27 59 C 3 0.000000 -3.449997 0.684800 1 6 31 48 C 4 2.279007 -2.579483 -0.723694 1 10 28 60 C 5 -2.579483 -0.723694 2.279007 1 8 32 49 C 6 -1.170975 -3.002716 1.408493 1 3 29 56 C 7 -1.170975 3.002716 1.408493 1 1 33 50 C 8 -2.579483 0.723694 2.279007 1 5 30 57 C 9 2.279007 2.579483 -0.723694 1 2 34 46 C 10 3.002716 -1.408493 -1.170975 1 4 35 47 C 11 -3.002716 -1.408493 -1.170975 1 20 36 43 C 12 -3.002716 1.408493 -1.170975 1 16 37 44 C 13 -0.723694 2.279007 -2.579483 1 17 38 45 C 14 0.684800 0.000000 -3.449997 1 18 39 41 C 15 -0.723694 -2.279007 -2.579483 1 19 40 42 C 16 -2.279007 2.579483 -0.723694 1 12 38 50 C 17 0.723694 2.279007 -2.579483 1 13 39 46 C 18 1.408493 -1.170975 -3.002716 1 14 40 47 C 19 -1.170975 -3.002716 -1.408493 1 15 36 48 C 20 -3.449997 -0.684800 0.000000 1 11 37 49 C 21 2.579483 0.723694 2.279007 1 22 25 53 C 22 2.579483 -0.723694 2.279007 1 21 23 54 C 23 1.408493 -1.170975 3.002716 1 22 24 55 C 24 0.684800 0.000000 3.449997 1 23 25 51 C 25 1.408493 1.170975 3.002716 1 21 24 52 C 26 1.170975 3.002716 1.408493 1 1 34 52 C 27 3.449997 0.684800 0.000000 1 2 35 53 C 28 2.279007 -2.579483 0.723694 1 4 31 54 C 29 -0.723694 -2.279007 2.579483 1 6 32 55 C 30 -1.408493 1.170975 3.002716 1 8 33 51 C 31 1.170975 -3.002716 1.408493 1 3 28 55 C 32 -1.408493 -1.170975 3.002716 1 5 29 51 C 33 -0.723694 2.279007 2.579483 1 7 30 52 C 34 2.279007 2.579483 0.723694 1 9 26 53 C 35 3.449997 -0.684800 0.000000 1 10 27 54 C 36 -2.279007 -2.579483 -0.723694 1 11 19 56 C 37 -3.449997 0.684800 0.000000 1 12 20 57 C 38 -1.170975 3.002716 -1.408493 1 13 16 58 C 39 1.408493 1.170975 -3.002716 1 14 17 59 C 40 0.723694 -2.279007 -2.579483 1 15 18 60 C 41 -0.684800 0.000000 -3.449997 1 14 42 45 C 42 -1.408493 -1.170975 -3.002716 1 15 41 43 C 43 -2.579483 -0.723694 -2.279007 1 11 42 44 C 44 -2.579483 0.723694 -2.279007 1 12 43 45 C 45 -1.408493 1.170975 -3.002716 1 13 41 44 C 46 1.170975 3.002716 -1.408493 1 9 17 58 C 47 2.579483 -0.723694 -2.279007 1 10 18 59 C 48 0.000000 -3.449997 -0.684800 1 3 19 60 C 49 -3.002716 -1.408493 1.170975 1 5 20 56 C 50 -2.279007 2.579483 0.723694 1 7 16 57 C 51 -0.684800 0.000000 3.449997 1 24 30 32 C 52 0.723694 2.279007 2.579483 1 25 26 33 C 53 3.002716 1.408493 1.170975 1 21 27 34 C 54 3.002716 -1.408493 1.170975 1 22 28 35 C 55 0.723694 -2.279007 2.579483 1 23 29 31 C 56 -2.279007 -2.579483 0.723694 1 6 36 49 C 57 -3.002716 1.408493 1.170975 1 8 37 50 C 58 0.000000 3.449997 -0.684800 1 1 38 46 C 59 2.579483 0.723694 -2.279007 1 2 39 47 C 60 1.170975 -3.002716 -1.408493 1 4 40 48 */