From 5eed043d5330b4283a27b438f0c6f95a9e08504a Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Tue, 22 Mar 2011 19:50:59 +0000 Subject: Optimised cylinder generation. When the sides are vertical we can use 4 sided polygons instead of triangles to define the sides, this reduces the facet count for the sides of the cylinder by half. diff --git a/src/primitives.cc b/src/primitives.cc index d0cd1b5..a971683 100644 --- a/src/primitives.cc +++ b/src/primitives.cc @@ -377,17 +377,25 @@ sphere_next_r2: for (int i=0; i 0) { + if (r1 == r2) { p->append_poly(); p->insert_vertex(circle1[i].x, circle1[i].y, z1); p->insert_vertex(circle2[i].x, circle2[i].y, z2); - p->insert_vertex(circle1[j].x, circle1[j].y, z1); - } - if (r2 > 0) { - p->append_poly(); - p->insert_vertex(circle2[i].x, circle2[i].y, z2); p->insert_vertex(circle2[j].x, circle2[j].y, z2); p->insert_vertex(circle1[j].x, circle1[j].y, z1); + } else { + if (r1 > 0) { + p->append_poly(); + p->insert_vertex(circle1[i].x, circle1[i].y, z1); + p->insert_vertex(circle2[i].x, circle2[i].y, z2); + p->insert_vertex(circle1[j].x, circle1[j].y, z1); + } + if (r2 > 0) { + p->append_poly(); + p->insert_vertex(circle2[i].x, circle2[i].y, z2); + p->insert_vertex(circle2[j].x, circle2[j].y, z2); + p->insert_vertex(circle1[j].x, circle1[j].y, z1); + } } } -- cgit v0.10.1