Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Debug = Core.Debug;
- var Mesh3D = Core.Mesh3D;
- var Solid = Core.Solid;
- var Vector3D = Core.Vector3D;
- /*
- params = [
- { "id": "radius", "displayName": "Radius", "type": "length", "rangeMin": 1, "rangeMax": 50, "default": 20 }
- ]
- */
- function er(phi){
- return new Vector3D(Math.cos(phi),Math.sin(phi),0);
- }
- function addQuad(mesh, v1, v2, v3, v4){
- var p1=[v1.x,v1.y,v1.z];
- var p2=[v2.x,v2.y,v2.z];
- var p3=[v3.x,v3.y,v3.z];
- var p4=[v4.x,v4.y,v4.z];
- mesh.quad(p1,p2,p3,p4);
- }
- function p(v){
- return [v.x,v.y,v.z];
- }
- function pD(v){
- return "("+v.x+","+v.y+","+v.z+")";
- }
- function process(params) {
- var mesh = new Mesh3D();
- var inner_radius=100.0;
- var outer_radius=120.0;
- var points=5;
- var points_z=10;
- var twist=Math.PI*2.0;
- var height=200.0;
- var layers=[];
- for(var j=0;j<points_z-1;++j){
- var l=[];
- var phi0=twist/points_z*j;
- var z0=new Vector3D(0,0,height/points_z*j);
- Debug.log(pD(z0));
- var r0=1.0-1.0*j/points_z;
- for(var i=0; i<points; i++){
- l.push(er(i*Math.PI/points+phi0).scale(inner_radius*r0).add(z0));
- l.push(er((i+0.5)*Math.PI/points+phi0).scale(outer_radius*r0).add(z0));
- }
- layers.push(l);
- }
- var top=new Vector3D([0,0,height]);
- var bottom_centre=new Vector3D([0,0,0]);
- for(i=0;i<layers.length-1;++i){
- for(j=0;j<layers[i].length;++j){
- mesh.quad(p(layers[i][j]),p(layers[i][(j+1)%layers[i].length]),p(layers[i+1][(j+1)%layers[i+1].length]),p(layers[i+1][j]));
- }
- }
- for(j=0;j<layers[layers.length-1].length;j++){
- mesh.triangle(p(layers[i][j]),p(layers[i][(j+1)%layers[i].length]),p(top));
- //Debug.log(pD(layers[i][j]));
- }
- for(j=0;j<layers[0].length;j++){
- mesh.triangle(p(layers[0][j]),p(bottom_centre),p(layers[0][(j+1)%layers[0].length]));
- }
- return Solid.make(mesh);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement