summaryrefslogtreecommitdiff
path: root/surface.cc
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-25 10:45:21 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-25 10:45:21 (GMT)
commit31c2a487ecf5753b8013b45a2cf08da7ccb34810 (patch)
tree5212e05c27ab2e51d0f50b8e20414a6a9d1cc03e /surface.cc
parentb485a2861f660411727b0020dbbe7aefd684fba8 (diff)
Clifford Wolf:
Improved surface primitive git-svn-id: http://svn.clifford.at/openscad/trunk@77 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'surface.cc')
-rw-r--r--surface.cc42
1 files changed, 13 insertions, 29 deletions
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<int,int>(i-1, 0)]);
p->append_vertex(ox + 0, oy + i, data[QPair<int,int>(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<int,int>(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<int,int>(i-1, columns-1)]);
p->insert_vertex(ox + columns-1, oy + i, data[QPair<int,int>(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<int,int>(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<int,int>(0, i-1)]);
p->insert_vertex(ox + i, oy + 0, data[QPair<int,int>(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<int,int>(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<int,int>(lines-1, i-1)]);
p->append_vertex(ox + i, oy + lines-1, data[QPair<int,int>(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<int,int>(lines-1, i)]);
- }
+ for (int i = lines-1; i > 0; i--)
+ p->insert_vertex(ox + 0, oy + i, min_val);
return p;
}
contact: Jan Huwald // Impressum