diff options
author | Marius Kintel <marius@kintel.net> | 2011-01-21 22:04:13 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-01-21 22:04:13 (GMT) |
commit | 0419cd823216b6ade267d4e0bdd071242aa8bc55 (patch) | |
tree | 395bf49dbe96d4d46cf76c86c92746b89bd4b4f9 /src/primitives.cc | |
parent | 195d21dd2d535a3ff06d3f3dfe1b1cdbabd4a0d8 (diff) | |
parent | 52a474eb5213cfdda7b4825d51861de27b48954f (diff) |
Merge branch 'meta23-master'
Diffstat (limited to 'src/primitives.cc')
-rw-r--r-- | src/primitives.cc | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/primitives.cc b/src/primitives.cc index 1fb1011..d0cd1b5 100644 --- a/src/primitives.cc +++ b/src/primitives.cc @@ -279,7 +279,7 @@ PolySet *PrimitiveNode::render_polyset(render_mode_e) const }; int rings = get_fragments_from_r(r1, fn, fs, fa); - ring_s ring[rings]; + ring_s *ring = new ring_s[rings]; for (int i = 0; i < rings; i++) { double phi = (M_PI * (i + 0.5)) / rings; @@ -333,6 +333,8 @@ sphere_next_r2: p->append_poly(); for (int i = 0; i < ring[rings-1].fragments; i++) p->insert_vertex(ring[rings-1].points[i].x, ring[rings-1].points[i].y, ring[rings-1].z); + + delete[] ring; } if (type == CYLINDER && h > 0 && r1 >=0 && r2 >= 0 && (r1 > 0 || r2 > 0)) @@ -352,8 +354,8 @@ sphere_next_r2: double x, y; }; - point2d circle1[fragments]; - point2d circle2[fragments]; + point2d *circle1 = new point2d[fragments]; + point2d *circle2 = new point2d[fragments]; for (int i=0; i<fragments; i++) { double phi = (M_PI*2*i) / fragments; @@ -400,6 +402,9 @@ sphere_next_r2: for (int i=0; i<fragments; i++) p->append_vertex(circle2[i].x, circle2[i].y, z2); } + + delete[] circle1; + delete[] circle2; } if (type == POLYHEDRON) @@ -445,22 +450,13 @@ sphere_next_r2: { int fragments = get_fragments_from_r(r1, fn, fs, fa); - struct point2d { - double x, y; - }; - - point2d circle[fragments]; + p->is2d = true; + p->append_poly(); - for (int i=0; i<fragments; i++) { + for (int i=0; i < fragments; i++) { double phi = (M_PI*2*i) / fragments; - circle[i].x = r1*cos(phi); - circle[i].y = r1*sin(phi); + p->append_vertex(r1*cos(phi), r1*sin(phi)); } - - p->is2d = true; - p->append_poly(); - for (int i=0; i<fragments; i++) - p->append_vertex(circle[i].x, circle[i].y); } if (type == POLYGON) |