X-Git-Url: http://git.scottworley.com/nt3d/blobdiff_plain/fc382d22506415e4c481587aad501e25b96f11ba..0ee732b2898771d951a5dc4b79c1aaa3ce47b48b:/nt3d.js diff --git a/nt3d.js b/nt3d.js index 7472548..a4d3977 100644 --- a/nt3d.js +++ b/nt3d.js @@ -55,8 +55,16 @@ nt3d = { } return points; }, - extrude: function(shape, path, shapenormals, pathnormals) { - var guts_result = nt3d._extrude_guts(shape, path, shapenormals, pathnormals); + cone: function(base_center, apex, radius, steps) { + var base = this.circle(radius, steps); + base = this.rotate_onto(base, [0,0,1], this.sub(apex, base_center)); + base = this.translate(base, base_center); + return this.closed_trianglefan([apex].concat(base)).concat( + this.trianglefan(base.reverse())); + }, + extrude: function(path, shape, shapenormals, pathnormals) { + + var guts_result = nt3d._extrude_guts(path, shape, shapenormals, pathnormals); // Add the end-caps // XXX: This doesn't work if shape is not convex return guts_result.points.concat( @@ -64,8 +72,8 @@ nt3d = { nt3d.trianglefan(guts_result.last_loop)); }, - closed_extrude: function(shape, path, shapenormals, pathnormals) { - var guts_result = nt3d._extrude_guts(shape, path, shapenormals, pathnormals); + closed_extrude: function(path, shape, shapenormals, pathnormals) { + var guts_result = nt3d._extrude_guts(path, shape, shapenormals, pathnormals); // Stitch the ends together return guts_result.points.concat( nt3d.closed_quadstrip(nt3d.zip(guts_result.first_loop, guts_result.last_loop))); @@ -81,7 +89,7 @@ nt3d = { } return fixedpathnormals; }, - _extrude_guts: function(shape, path, shapenormals, pathnormals) { + _extrude_guts: function(path, shape, shapenormals, pathnormals) { var fixedpathnormals = this._fix_pathnormals(shapenormals, pathnormals); var result = { points: [] }; var prev_loop;