summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Bright <hugh.m.bright@gmail.com>2013-09-13 00:44:07 (GMT)
committerDon Bright <hugh.m.bright@gmail.com>2013-09-13 00:44:07 (GMT)
commitd6a57b89682ed7991744dc142e9af21d5e74cb83 (patch)
treed9fdaca01282825ff51f0f2719f03eba6c0e1752
parentc87e9f8d6e210a387ca223f7e8cb14c77b22d8e2 (diff)
fix bug in 2d resize code
-rw-r--r--src/CGALEvaluator.cc6
-rw-r--r--testdata/scad/features/resize-2d-tests.scad8
-rw-r--r--tests/regression/cgalpngtest/resize-2d-tests-expected.pngbin2351 -> 2451 bytes
-rw-r--r--tests/regression/dumptest/resize-2d-tests-expected.csg50
-rw-r--r--tests/regression/opencsgtest/resize-2d-tests-expected.pngbin3193 -> 3429 bytes
-rw-r--r--tests/regression/throwntogethertest/resize-2d-tests-expected.pngbin3154 -> 3432 bytes
6 files changed, 63 insertions, 1 deletions
diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc
index 09070d5..8da4649 100644
--- a/src/CGALEvaluator.cc
+++ b/src/CGALEvaluator.cc
@@ -215,6 +215,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyResize(const CgaladvNode &node)
bbox_size.push_back( bb.xmax()-bb.xmin() );
bbox_size.push_back( bb.ymax()-bb.ymin() );
bbox_size.push_back( bb.zmax()-bb.zmin() );
+
int newsizemax_index = 0;
for (int i=0;i<N.dim;i++) {
if (node.newsize[i]) {
@@ -229,7 +230,10 @@ CGAL_Nef_polyhedron CGALEvaluator::applyResize(const CgaladvNode &node)
newsizemax_index = i;
}
}
- NT3 autoscale = NT3( node.newsize[ newsizemax_index ] ) / bbox_size[ newsizemax_index ];
+
+ NT3 autoscale = NT3( 1 );
+ if ( node.newsize[ newsizemax_index ] != 0 )
+ autoscale = NT3( node.newsize[ newsizemax_index ] ) / bbox_size[ newsizemax_index ];
for (int i=0;i<N.dim;i++) {
if (node.autosize[i] && node.newsize[i]==0)
scale[i] = autoscale;
diff --git a/testdata/scad/features/resize-2d-tests.scad b/testdata/scad/features/resize-2d-tests.scad
index 911a4cd..3b6fe9d 100644
--- a/testdata/scad/features/resize-2d-tests.scad
+++ b/testdata/scad/features/resize-2d-tests.scad
@@ -53,3 +53,11 @@ translate([32,16]) resize([0,0,15],auto=true) shape2();
translate([32,32]) resize([0,0,15]) shape3();
}
+color("blue"){
+translate([-16,-16]) resize([10,8],auto=[false,true])
+ scale([0.5,100,20]) shape();
+translate([0,-16]) resize([8,10,15],auto=true)
+ scale([1000,0.5]) shape2();
+translate([16,-16]) resize([10,8,15])
+ scale([200,200]) shape3();
+}
diff --git a/tests/regression/cgalpngtest/resize-2d-tests-expected.png b/tests/regression/cgalpngtest/resize-2d-tests-expected.png
index 01cc5b1..e764ac3 100644
--- a/tests/regression/cgalpngtest/resize-2d-tests-expected.png
+++ b/tests/regression/cgalpngtest/resize-2d-tests-expected.png
Binary files differ
diff --git a/tests/regression/dumptest/resize-2d-tests-expected.csg b/tests/regression/dumptest/resize-2d-tests-expected.csg
index 5f8d8b5..5cd9a2e 100644
--- a/tests/regression/dumptest/resize-2d-tests-expected.csg
+++ b/tests/regression/dumptest/resize-2d-tests-expected.csg
@@ -173,4 +173,54 @@ group() {
}
}
}
+ color([0, 0, 1, 1]) {
+ multmatrix([[1, 0, 0, -16], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ resize(newsize = [10,8,0], auto = [0,1,0]) {
+ multmatrix([[0.5, 0, 0, 0], [0, 100, 0, 0], [0, 0, 20, 0], [0, 0, 0, 1]]) {
+ group() {
+ difference() {
+ square(size = [5, 5], center = false);
+ multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ square(size = [1, 1], center = false);
+ }
+ multmatrix([[1, 0, 0, 3], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ circle($fn = 10, $fa = 12, $fs = 2, r = 1);
+ }
+ }
+ }
+ }
+ }
+ }
+ multmatrix([[1, 0, 0, 0], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ resize(newsize = [8,10,15], auto = [1,1,1]) {
+ multmatrix([[1000, 0, 0, 0], [0, 0.5, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ group() {
+ difference() {
+ square(size = [5, 5], center = false);
+ multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ square(size = [1, 1], center = false);
+ }
+ multmatrix([[1, 0, 0, 2], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ square(size = [1, 1], center = false);
+ }
+ }
+ }
+ }
+ }
+ }
+ multmatrix([[1, 0, 0, 16], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ resize(newsize = [10,8,15], auto = [0,0,0]) {
+ multmatrix([[200, 0, 0, 0], [0, 200, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ group() {
+ difference() {
+ square(size = [5, 5], center = false);
+ multmatrix([[1, 0, 0, 0], [0, 1, 0, 2.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
+ square(size = [5, 1], center = false);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
diff --git a/tests/regression/opencsgtest/resize-2d-tests-expected.png b/tests/regression/opencsgtest/resize-2d-tests-expected.png
index 5a2d976..83a1ca7 100644
--- a/tests/regression/opencsgtest/resize-2d-tests-expected.png
+++ b/tests/regression/opencsgtest/resize-2d-tests-expected.png
Binary files differ
diff --git a/tests/regression/throwntogethertest/resize-2d-tests-expected.png b/tests/regression/throwntogethertest/resize-2d-tests-expected.png
index 1c007ed..6c55fa9 100644
--- a/tests/regression/throwntogethertest/resize-2d-tests-expected.png
+++ b/tests/regression/throwntogethertest/resize-2d-tests-expected.png
Binary files differ
contact: Jan Huwald // Impressum