openjscad-aurora-webapp
41 строка · 1.1 Кб
1// title: Rose Curve
2// author: Eduard Bespalov
3// license: MIT License
4// description: testing solidFromSlices()
5
6function main(params) {7var radius = 50,8height = 60,9vec = new CSG.Vector3D(0, 5, 0),10angle;11
12angle = 360 / 5;13var pent = CSG.Polygon.createFromPoints([14vec,15vec.rotateZ(1 * angle),16vec.rotateZ(2 * angle),17vec.rotateZ(3 * angle),18vec.rotateZ(4 * angle)19]).rotateY(90).setColor([1,0,0.1]);//.translate([0, radius, 0]);20
21//rose: r = a * sin(k * fi)22// k = 5 /323var k = 5 / 3;24return pent.solidFromSlices({25numslices: 300,26loop: true,27callback: function(t, slice) {28var angle = t * Math.PI * 3,29r = radius * Math.sin(k * angle),30x = r * Math.cos(angle),31y = r * Math.sin(angle),32vec = new CSG.Vector3D(x, y, 0);33//normal34var x1 = radius * (k * Math.cos(k * angle) * Math.cos(angle) - Math.sin(angle) * Math.sin(k * angle)),35y1 = radius * (k * Math.cos(k * angle) * Math.sin(angle) + Math.cos(angle) * Math.sin(k * angle)),36turn = (new CSG.Vector2D(x1, y1)).angleDegrees();37
38return this.rotateZ(turn).translate(vec);39}40});41}
42