/ examples / shape2wire.scad
shape2wire.scad
 1  use <ptf/ptf_rotate.scad>
 2  use <polyline_join.scad>
 3  use <shape_superformula.scad> 
 4  
 5  function shape2wire(shape, r) = 
 6  	let(
 7  	    leng_shape = len(shape),
 8  	    a = 360 / leng_shape
 9  	)
10  	[
11  		for(i = [0:len(shape) - 1])
12  		let(p = shape[i])	
13  		ptf_rotate(
14  		    ptf_rotate([p[0], p[1], 0], [90, 0, 0]) + [r, 0, 0], 
15  		    a * i
16  		)
17  	];
18  
19  phi_step = 0.05;
20  m = 16;
21  n = 0.5;
22  n3 = 16;
23  shape = shape_superformula(phi_step, m, m, n, n, n3) * 30;
24  
25  translate([150, 0])
26  rotate([90, 0, 0])
27  linear_extrude(1, center = true)
28  difference() {
29  	square(120, center = true);
30  	polyline_join([each shape, shape[0]])
31  	    circle(2.5);
32  }
33  
34  wire = shape2wire(shape, 150);
35  rotate(-$t * 360)
36  polyline_join([each wire, wire[0]])
37  	sphere(1.5);