From 18e7fc18647e0e13344460f3f169825594b13a20 Mon Sep 17 00:00:00 2001 From: tpietzsch <tobias.pietzsch@gmail.com> Date: Fri, 27 Sep 2019 14:45:45 +0200 Subject: [PATCH] Fix computation of initial transform Was slightly off before because of +/-0.5 shifts somewhere. Also, always z-slice in the pixel center now to correctly support 2D data (with dimension(2)==1). --- src/main/java/bdv/tools/InitializeViewerState.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/bdv/tools/InitializeViewerState.java b/src/main/java/bdv/tools/InitializeViewerState.java index cb51ce10..36aa6b2a 100644 --- a/src/main/java/bdv/tools/InitializeViewerState.java +++ b/src/main/java/bdv/tools/InitializeViewerState.java @@ -93,8 +93,8 @@ public class InitializeViewerState */ public static AffineTransform3D initTransform( final int viewerWidth, final int viewerHeight, final boolean zoomedIn, final ViewerState state ) { - final int cX = viewerWidth / 2; - final int cY = viewerHeight / 2; + final double cX = viewerWidth / 2.0; + final double cY = viewerHeight / 2.0; final Source< ? > source = state.getSources().get( state.getCurrentSource() ).getSpimSource(); final int timepoint = state.getCurrentTimepoint(); @@ -111,9 +111,9 @@ public class InitializeViewerState final double sY1 = sourceInterval.max( 1 ); final double sZ0 = sourceInterval.min( 2 ); final double sZ1 = sourceInterval.max( 2 ); - final double sX = ( sX0 + sX1 + 1 ) / 2; - final double sY = ( sY0 + sY1 + 1 ) / 2; - final double sZ = ( sZ0 + sZ1 + 1 ) / 2; + final double sX = ( sX0 + sX1 ) / 2; + final double sY = ( sY0 + sY1 ) / 2; + final double sZ = Math.round( ( sZ0 + sZ1 ) / 2 ); // z-slice in the middle of a pixel final double[][] m = new double[ 3 ][ 4 ]; @@ -152,8 +152,8 @@ public class InitializeViewerState viewerTransform.scale( scale ); // window center offset - viewerTransform.set( viewerTransform.get( 0, 3 ) + cX, 0, 3 ); - viewerTransform.set( viewerTransform.get( 1, 3 ) + cY, 1, 3 ); + viewerTransform.set( viewerTransform.get( 0, 3 ) + cX - 0.5, 0, 3 ); + viewerTransform.set( viewerTransform.get( 1, 3 ) + cY - 0.5, 1, 3 ); return viewerTransform; } -- GitLab