From 7c606d36b01ede3625a6b863cd1b7df0b551135a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:15:04 +0200 Subject: Improved quality of linear_extrude with twist by forcing all quads to be tessellated the same direction diff --git a/tests/regression/cgalpngtest/linear_extrude-tests-expected.png b/tests/regression/cgalpngtest/linear_extrude-tests-expected.png index 4ed4361..1486743 100644 Binary files a/tests/regression/cgalpngtest/linear_extrude-tests-expected.png and b/tests/regression/cgalpngtest/linear_extrude-tests-expected.png differ diff --git a/tests/regression/opencsgtest/linear_extrude-tests-expected.png b/tests/regression/opencsgtest/linear_extrude-tests-expected.png index 579479e..f31b22a 100644 Binary files a/tests/regression/opencsgtest/linear_extrude-tests-expected.png and b/tests/regression/opencsgtest/linear_extrude-tests-expected.png differ -- cgit v0.10.1 From 6b8fd15ff79ae90682992ee045f92f28b136c34a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:23:55 +0200 Subject: Improved quality of linear_extrude with twist by forcing all quads to be tessellated the same direction diff --git a/src/PolySetCGALEvaluator.cc b/src/PolySetCGALEvaluator.cc index 7f62d0a..190d75a 100644 --- a/src/PolySetCGALEvaluator.cc +++ b/src/PolySetCGALEvaluator.cc @@ -181,6 +181,7 @@ cant_project_non_simple_polyhedron: static void add_slice(PolySet *ps, const DxfData &dxf, DxfData::Path &path, double rot1, double rot2, double h1, double h2) { + bool splitfirst = sin(rot2 - rot1) >= 0.0; for (size_t j = 1; j < path.indices.size(); j++) { int k = j - 1; @@ -197,10 +198,7 @@ static void add_slice(PolySet *ps, const DxfData &dxf, DxfData::Path &path, doub double kx2 = dxf.points[path.indices[k]][0] * cos(rot2*M_PI/180) + dxf.points[path.indices[k]][1] * sin(rot2*M_PI/180); double ky2 = dxf.points[path.indices[k]][0] * -sin(rot2*M_PI/180) + dxf.points[path.indices[k]][1] * cos(rot2*M_PI/180); - double dia1_len_sq = (jy1-ky2)*(jy1-ky2) + (jx1-kx2)*(jx1-kx2); - double dia2_len_sq = (jy2-ky1)*(jy2-ky1) + (jx2-kx1)*(jx2-kx1); - - if (dia1_len_sq > dia2_len_sq) + if (splitfirst) { ps->append_poly(); if (path.is_inner) { -- cgit v0.10.1 From 5c590dc26b769e5732f1f1c4a4686fe157833b28 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:27:38 +0200 Subject: Updated test case with recent linear_extrude improvement diff --git a/tests/regression/throwntogethertest/linear_extrude-tests-expected.png b/tests/regression/throwntogethertest/linear_extrude-tests-expected.png index 59b61e7..b672783 100644 Binary files a/tests/regression/throwntogethertest/linear_extrude-tests-expected.png and b/tests/regression/throwntogethertest/linear_extrude-tests-expected.png differ -- cgit v0.10.1