From 31c2a487ecf5753b8013b45a2cf08da7ccb34810 Mon Sep 17 00:00:00 2001 From: clifford Date: Sat, 25 Jul 2009 10:45:21 +0000 Subject: Clifford Wolf: Improved surface primitive git-svn-id: http://svn.clifford.at/openscad/trunk@77 b57f626f-c46c-0410-a088-ec61d464b74c diff --git a/surface.cc b/surface.cc index 4b2fe36..17b859d 100644 --- a/surface.cc +++ b/surface.cc @@ -141,16 +141,6 @@ PolySet *SurfaceNode::render_polyset(render_mode_e) const p->append_vertex(ox + j-1, oy + i, v3); p->append_vertex(ox + j-1, oy + i-1, v1); p->append_vertex(ox + j-0.5, oy + i-0.5, vx); - - p->append_poly(); - p->append_vertex(ox + j-1, oy + i-1, min_val); - p->append_vertex(ox + j-1, oy + i, min_val); - p->append_vertex(ox + j, oy + i-1, min_val); - - p->append_poly(); - p->append_vertex(ox + j-1, oy + i, min_val); - p->append_vertex(ox + j, oy + i, min_val); - p->append_vertex(ox + j, oy + i-1, min_val); } for (int i = 1; i < lines; i++) @@ -159,21 +149,13 @@ PolySet *SurfaceNode::render_polyset(render_mode_e) const p->append_vertex(ox + 0, oy + i-1, min_val); p->append_vertex(ox + 0, oy + i-1, data[QPair(i-1, 0)]); p->append_vertex(ox + 0, oy + i, data[QPair(i, 0)]); - - p->append_poly(); - p->insert_vertex(ox + 0, oy + i-1, min_val); - p->insert_vertex(ox + 0, oy + i, min_val); - p->insert_vertex(ox + 0, oy + i, data[QPair(i, 0)]); + p->append_vertex(ox + 0, oy + i, min_val); p->append_poly(); p->insert_vertex(ox + columns-1, oy + i-1, min_val); p->insert_vertex(ox + columns-1, oy + i-1, data[QPair(i-1, columns-1)]); p->insert_vertex(ox + columns-1, oy + i, data[QPair(i, columns-1)]); - - p->append_poly(); - p->append_vertex(ox + columns-1, oy + i-1, min_val); - p->append_vertex(ox + columns-1, oy + i, min_val); - p->append_vertex(ox + columns-1, oy + i, data[QPair(i, columns-1)]); + p->insert_vertex(ox + columns-1, oy + i, min_val); } for (int i = 1; i < columns; i++) @@ -182,22 +164,24 @@ PolySet *SurfaceNode::render_polyset(render_mode_e) const p->insert_vertex(ox + i-1, oy + 0, min_val); p->insert_vertex(ox + i-1, oy + 0, data[QPair(0, i-1)]); p->insert_vertex(ox + i, oy + 0, data[QPair(0, i)]); - - p->append_poly(); - p->append_vertex(ox + i-1, oy + 0, min_val); - p->append_vertex(ox + i, oy + 0, min_val); - p->append_vertex(ox + i, oy + 0, data[QPair(0, i)]); + p->insert_vertex(ox + i, oy + 0, min_val); p->append_poly(); p->append_vertex(ox + i-1, oy + lines-1, min_val); p->append_vertex(ox + i-1, oy + lines-1, data[QPair(lines-1, i-1)]); p->append_vertex(ox + i, oy + lines-1, data[QPair(lines-1, i)]); + p->append_vertex(ox + i, oy + lines-1, min_val); + } - p->append_poly(); - p->insert_vertex(ox + i-1, oy + lines-1, min_val); + p->append_poly(); + for (int i = 0; i < columns-1; i++) + p->insert_vertex(ox + i, oy + 0, min_val); + for (int i = 0; i < lines-1; i++) + p->insert_vertex(ox + columns-1, oy + i, min_val); + for (int i = columns-1; i > 0; i--) p->insert_vertex(ox + i, oy + lines-1, min_val); - p->insert_vertex(ox + i, oy + lines-1, data[QPair(lines-1, i)]); - } + for (int i = lines-1; i > 0; i--) + p->insert_vertex(ox + 0, oy + i, min_val); return p; } -- cgit v0.10.1