Bug 8133 fixed: Ticks disappeared in planar 3D view 89/13189/2
Calixte DENIZET [Thu, 21 Nov 2013 10:26:58 +0000 (11:26 +0100)]
Change-Id: Idc939bebfd864539184d03cd22ac77cbeae0f54f

scilab/CHANGES_5.5.X
scilab/modules/graphics/tests/nonreg_tests/bug_8133.tst [new file with mode: 0644]
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/axes/ruler/AxesRulerDrawer.java

index 985b100..cb082a5 100644 (file)
@@ -51,6 +51,8 @@ Scilab Bug Fixes
 
 * Bug #8060 fixed - Display of a list improved in the variable browser.
 
+* Bug #8133 fixed - Ticks disappeared in planar 3D view.
+
 * Bug #8231 fixed - xrect help page did not say that clipping property was inherited.
 
 * Bug #8337 fixed - mtlb_rand now uses the "uniform" rule, whatever the random rule set is.
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_8133.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_8133.tst
new file mode 100644 (file)
index 0000000..0e58ec1
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- INTERACTIVE TEST -->
+
+// <-- Non-regression test for bug 8133 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/8133
+//
+// <-- Short Description -->
+// Ticks disappeared in planar 3D view
+
+clf();
+plot3d([1,2],[1,2],[1,2]);
+
+// ticks should be present on z-axis & x-axis
+set(gca(),"rotation_angles",[90,90]);
+
+// ticks should be present on z-axis & y-axis
+set(gca(),"rotation_angles",[90,0]);
\ No newline at end of file
index 1321332..942b340 100644 (file)
@@ -227,23 +227,21 @@ public class AxesRulerDrawer {
         }
 
         // Draw Z ruler
-        if (axes.getViewAsEnum() == Camera.ViewType.VIEW_3D && axes.getRotationAngles()[1] != 90.0) {
+        if (axes.getViewAsEnum() == Camera.ViewType.VIEW_3D) {
             double txs, tys, xs, ys;
-
             if (Math.abs(matrix[2]) < Math.abs(matrix[6])) {
-                xs = Math.signum(matrix[2]);
-                ys = -Math.signum(matrix[6]);
+                xs = matrix[2] > 0 ? 1 : -1;
+                ys = matrix[6] > 0 ? -1 : 1;
                 txs = xs;
                 tys = 0;
             } else {
-                xs = -Math.signum(matrix[2]);
-                ys = Math.signum(matrix[6]);
+                xs = matrix[2] > 0 ? -1 : 1;
+                ys = matrix[6] > 0 ? 1 : -1;
                 txs = 0;
                 tys = ys;
             }
 
             rulerModel = getDefaultRulerModel(axes, colorMap);
-
             rulerModel.setFirstPoint(new Vector3d(xs, ys, -1));
             rulerModel.setSecondPoint(new Vector3d(xs, ys, 1));
             rulerModel.setTicksDirection(new Vector3d(txs, tys, 0));
@@ -281,7 +279,7 @@ public class AxesRulerDrawer {
 
                 zAxisLabelPositioner.setTicksDirection(new Vector3d(txs, tys, 0.0));
                 zAxisLabelPositioner.setDistanceRatio(distanceRatio);
-                zAxisLabelPositioner.setProjectedTicksDirection(rulerDrawingResult.getNormalizedTicksDirection().setZ(0));
+                zAxisLabelPositioner.setProjectedTicksDirection(rulerDrawingResult.getNormalizedTicksDirection().setZ(0).setY(1e-7));
             } else {
                 /* z-axis not visible: compute the projected ticks direction and distance ratio (see the x-axis case). */
                 Vector3d zTicksDirection = new Vector3d(txs, tys, 0);
@@ -312,7 +310,7 @@ public class AxesRulerDrawer {
 
         RulerDrawer[] rulerDrawers = rulerDrawerManager.get(axes);
         ElementsBuffer vertexBuffer = drawingTools.getCanvas().getBuffersManager().createElementsBuffer();
-        final boolean is3D = axes.getViewAsEnum() == Camera.ViewType.VIEW_3D && axes.getRotationAngles()[1] != 90.0;
+        final boolean is3D = axes.getViewAsEnum() == Camera.ViewType.VIEW_3D;// && axes.getRotationAngles()[1] != 90.0;
 
         if (rulerDrawers[0].getModel() == null || rulerDrawers[1].getModel() == null || (is3D && rulerDrawers[2].getModel() == null)) {
             computeRulers(axes, axesDrawer, colorMap, drawingTools, drawingTools.getTransformationManager().getModelViewStack().peek(), drawingTools.getTransformationManager().getCanvasProjection());
@@ -412,7 +410,7 @@ public class AxesRulerDrawer {
             if (axes.getZAxisVisible()) {
                 rulerDrawers[2].draw(drawingTools);
 
-                if (axes.getZAxisGridColor() != -1 || !axes.getZAxisVisible()) {
+                if (axes.getZAxisGridColor() != -1) {
                     FloatBuffer vertexData;
                     if (axes.getZAxisLogFlag()) {
                         List<Double> values = rulerDrawers[2].getSubTicksValue();
@@ -453,7 +451,7 @@ public class AxesRulerDrawer {
         drawingTools.getCanvas().getBuffersManager().dispose(vertexBuffer);
     }
 
-    private double getNonZeroSignum(double value) {
+    private static final double getNonZeroSignum(double value) {
         if (value < 0) {
             return -1;
         } else {