* Bug 15995 fixed: patch was missing in surface plot 62/20962/6
St├ęphane MOTTELET [Fri, 26 Apr 2019 13:53:50 +0000 (15:53 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=15995

Change-Id: I074aed1adf25e195b2d22b5e498610df7a9a8ab0

scilab/CHANGES.md
scilab/modules/graphic_objects/src/cpp/Triangulator.cpp
scilab/modules/graphic_objects/tests/nonreg_tests/bug_15995.tst [new file with mode: 0644]

index f3d424f..7b6a3ff 100644 (file)
@@ -149,6 +149,7 @@ Bug Fixes
 * [#15523](http://bugzilla.scilab.org/show_bug.cgi?id=15523): `%ODEOPTIONS(1)=2` didn't work with solvers 'rk' and 'rkf' 
 * [#15577](http://bugzilla.scilab.org/show_bug.cgi?id=15577): `edit` did not accept a line number as text, as with `edit linspace 21`.
 * [#15983](http://bugzilla.scilab.org/show_bug.cgi?id=15983): `group()` regressed in 5.5.2 due to a too intrusive fix.
+* [#15995](http://bugzilla.scilab.org/show_bug.cgi?id=15995): patch was missing in surface plot (regression)
 * [#16005](http://bugzilla.scilab.org/show_bug.cgi?id=16005): The `intdec` example was biased and not robust when changing sampling frequencies.
 * [#16007](http://bugzilla.scilab.org/show_bug.cgi?id=16007): Non-integer index in sparse makes Scilab crash.
 * [#16021](http://bugzilla.scilab.org/show_bug.cgi?id=16021): `tand([-90 90])` answered [Nan Nan] instead of [-Inf, Inf]. `cotd([-90 90])` answered [Nan Nan] instead of [0 0]. `1 ./cosd([-90 90])` answered [Inf -Inf] instead of [Inf Inf].
index f406c19..87b65db 100644 (file)
@@ -115,9 +115,9 @@ void Triangulator::fillPoints(void)
         normal.y *= sign;
         normal.z *= sign;
 
-        double c, s;
+        double c, s, nxy = sqrt(normal.x * normal.x + normal.y * normal.y);
 
-        c = normal.y / sqrt(normal.x * normal.x + normal.y * normal.y);
+        c = nxy == 0. ? 1. : normal.y / nxy; // bug #15995 fix
         s = sqrt(1. - c * c);
         s = normal.x < 0. ? -s : s;
 
diff --git a/scilab/modules/graphic_objects/tests/nonreg_tests/bug_15995.tst b/scilab/modules/graphic_objects/tests/nonreg_tests/bug_15995.tst
new file mode 100644 (file)
index 0000000..be5b6eb
--- /dev/null
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+
+// <-- Non-regression test for bug 15995 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=15995
+//
+// <-- Short Description -->
+// Missing patch in surface plot (regression)
+
+clf
+surf(0:1,0:1,[0 1;1 %eps])
+gcf().axes_size=[100 100]
+xs2gif(0,"TMPDIR/image1.gif")
+
+clf
+surf(0:1,0:1,[0 1;1 0])
+gcf().axes_size=[100 100]
+xs2gif(0,"TMPDIR/image2.gif")
+
+// bitmap images should be bitwise equal (patch has to be filled)
+assert_checkequal(getmd5("TMPDIR/image1.gif"),getmd5("TMPDIR/image2.gif"))