* If useful, a simple .js for an Archimedean spiral:
* From 2006, but it still seems to work with C3D V7, but use at your own risk.
* There is a Y / vertical parameter to get a conical spiral which you can tweak.
// spiral Archimedes.js
// helmut
//
// for scripts/Splineobj Folder
// definitions for property block GUI
function buildUI(obj) {
obj.setParameter("name","spiral Archi");
obj.addParameterInt("loops",3,0,120,true,true);
obj.addParameterInt("increment",10,1,90,true,true);
obj.addParameterSeparator("Variables");
// "variable", default, lower / upper limit, ???, ???
obj.addParameterFloat("offset",1,0,100,true,true);
obj.addParameterFloat("horizontal",0.001,0,100,true,true);
obj.addParameterFloat("vertical",0.0,0,100,true,true);
}
function buildObject(obj) {
// definitions local variables
// obj.core = holds ∑ data of spline object
var spline = obj.core();
// assign user set parameters
var r = 0;
var off = obj.getParameter("offset");
var hrz = obj.getParameter("horizontal");
var vrt = obj.getParameter("vertical");
var thetamax = obj.getParameter("loops") * 360;
var thetainc=obj.getParameter("increment")
for(var u = 0;u <= thetamax;u=u+thetainc){
var r = off + (hrz*u)
// convert theta to PI base
var u_rad=Math.PI*2*u/360;
// new Vec3D(x, y, z) = returns point (x, y, z)
var pos=new Vec3D(r * Math.cos(u_rad), r * (vrt*1), r * Math.sin(u_rad));
// generate wave
if(u_rad==0)
spline.move(pos); // move pen to start
else
spline.line(pos); // draw segment
}
// spline.close();
}