openjscad-aurora-webapp
47 строк · 1.2 Кб
1// title: Umbilical Torus generator
2// author: Bruce Mueller
3// date: 2013/03/30
4// license: Creative Commons CC BY-SA
5// description: adapted for OpenJSCAD.org by Rene K. Mueller 2013/03/30
6
7// inc = incremental segments
8// r = radius of circle
9// t = 'radius' of triangle -distance from center to vertex
10// a = angle of rotation of triangle
11// b = angle rotation around center of circle
12
13function tri(r,t,a,b) { return [(r + t*sin(a))*cos(b), (r+ t*sin(a))*sin(b), t*cos(a)]; }14
15// module to generate a rotated triangle slice, inc degrees wide
16// (could not implement this in the for loop below)
17
18function wedge(r,t,i,inc) {19var a1 = tri(r,t,i/3,i);20var b1 = tri(r,t,120+i/3,i);21var c1 = tri(r,t,240+i/3,i);22j = i+inc;23var a2 = tri(r,t,j/3,j);24var b2 = tri(r,t,120+j/3,j);25var c2 = tri(r,t,240+j/3,j);26
27return polyhedron({28points: [a1,b1,c1,a2,b2,c2],29triangles: [ [0,1,2], [5,4,3],30[3,4,0], [1,0,4],31[3,0,2], [3,2,5],32[5,2,4], [4,2,1] ] });33}
34
35
36// created a conjoined set of triangular wedges around the circle
37
38
39function main() {40var inc = 10;41var o = [];42
43for(var i=0; i<360; i+=inc) {44o.push(wedge(2,1,i,inc));45}46return union(o).scale(10); // would be more effectice & suitable to create just one polyhedron47}
48