From fda100a120d00d790ba822610f1ccfa2635b48ca Mon Sep 17 00:00:00 2001 From: Nils Schmidt Date: Mon, 18 Dec 2017 19:31:27 +0100 Subject: [PATCH] Prepared fix for issue #614. --- .../data/VM28SlantingMatrixProjector.java | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/org/nschmidt/ldparteditor/data/VM28SlantingMatrixProjector.java b/src/org/nschmidt/ldparteditor/data/VM28SlantingMatrixProjector.java index 53b312bb3..1ffb21378 100644 --- a/src/org/nschmidt/ldparteditor/data/VM28SlantingMatrixProjector.java +++ b/src/org/nschmidt/ldparteditor/data/VM28SlantingMatrixProjector.java @@ -189,15 +189,15 @@ public Matrix getSlantingMatrix(boolean originToAxisCenter) { Vector3d origin = new Vector3d(); if (originToAxisCenter) { - Vector3d axismidpoint1 = new Vector3d(); - Vector3d axismidpoint2 = new Vector3d(); - Vector3d.add(new Vector3d(axis1[0]).scaledByHalf(), new Vector3d(axis1[1]).scaledByHalf(), axismidpoint1); - Vector3d.add(new Vector3d(axis2[0]).scaledByHalf(), new Vector3d(axis2[1]).scaledByHalf(), axismidpoint2); - Vector3d.add(axismidpoint1.scaledByHalf(), axismidpoint2.scaledByHalf(), origin); mx = mx.scaledByHalf(); my = my.scaledByHalf(); + Vector3d.add(origin, zref, origin); + Vector3d.add(origin, mx, origin); + Vector3d.add(origin, my, origin); } + // FIXME Modes needs to be tested... + switch (axisSelectionMode) { case 0: // X,Y,Z (no adjustment) case 1: // X,Y (no adjustment) @@ -205,7 +205,7 @@ public Matrix getSlantingMatrix(boolean originToAxisCenter) { case 2: // X,Z (swap YZ) tmp = mz; mz = my; - my = tmp; + my = tmp.scale(BigDecimal.ONE.negate()); break; case 3: // Y,Z (swap XY+YZ) tmp = mx; @@ -220,24 +220,11 @@ public Matrix getSlantingMatrix(boolean originToAxisCenter) { } // Calculate matrix - - // FIXME Origin and matrix needs to be corrected! - result = new Matrix( mx.X, mx.Y, mx.Z, BigDecimal.ZERO, my.X, my.Y, my.Z, BigDecimal.ZERO, mz.X, mz.Y, mz.Z, BigDecimal.ZERO, - BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ONE); - /* - - - result = new Matrix( - mx.X, my.X, mz.X, BigDecimal.ZERO, - mx.Y, my.Y, mz.Y, BigDecimal.ZERO, - mx.Z, my.Z, mz.Z, BigDecimal.ZERO, origin.X, origin.Y, origin.Z, BigDecimal.ONE); - */ - transformation = result; return result;