/** * Can be used by derived classes in the {@link #draw(Graphics2D)} method to * get the current transform from 3D source coordinates to 3D screen * coordinates (where Z coordinate is distance from the slice shown on the * screen). * * @param transform */ protected void getCurrentTransform3D( final AffineTransform3D transform ) { info.getViewerTransform( transform ); transform.concatenate( sourceTransform ); }
@Override public synchronized MipmapHints getMipmapHints( final AffineTransform3D screenTransform, final int timepoint, final int previousTimepoint ) { composed.set( screenTransform ); composed.concatenate( sourceTransform ); return sourceMipmapOrdering.getMipmapHints( composed, timepoint, previousTimepoint ); }
@Override public synchronized void drawOverlays( final Graphics g ) { sourceToScreen.set( viewerTransform ); sourceToScreen.concatenate( sourceTransform ); box.paint( ( Graphics2D ) g, sourceToScreen, sourceInterval, virtualScreenInterval, boxInterval ); }
/** * Sets the fixed part of the extra transformation to the specified * transform. * <p> * The extra transformation applied by the {@link TransformedSource} is a * concatenation of an {@link #getIncrementalTransform(AffineTransform3D) * incremental} and a {@link #getFixedTransform(AffineTransform3D) fixed} * transform. * * @param transform * is copied to the {@link #getFixedTransform(AffineTransform3D) * fixed} transform. */ public synchronized void setFixedTransform( final AffineTransform3D transform ) { fixedTransform.set( transform ); sourceTransform.set( incrementalTransform ); sourceTransform.concatenate( fixedTransform ); }
/** * Sets the incremental part of the extra transformation to the specified * transform. * <p> * The extra transformation applied by the {@link TransformedSource} is a * concatenation of an {@link #getIncrementalTransform(AffineTransform3D) * incremental} and a {@link #getFixedTransform(AffineTransform3D) fixed} * transform. * * @param transform * is copied to the {@link #getIncrementalTransform(AffineTransform3D) * incremental} transform. */ public synchronized void setIncrementalTransform( final AffineTransform3D transform ) { incrementalTransform.set( transform ); sourceTransform.set( incrementalTransform ); sourceTransform.concatenate( fixedTransform ); }
transform.concatenate( sourceTransform ); final double sizeOfOnePixel = voxelDimensions.dimension( 0 ) / Affine3DHelpers.extractScale( transform, 0 );
protected void loadTimepoint( final int timepointIndex ) { currentTimePointIndex = timepointIndex; currentTimePointIsPresent = isPresent( timepointIndex ); if ( currentTimePointIsPresent ) { final int timepointId = timePointsOrdered.get( timepointIndex ).getId(); final ViewId viewId = new ViewId( timepointId, setupId ); final AffineTransform3D reg = viewRegistrations.get( viewId ).getModel(); for ( int level = 0; level < currentSourceTransforms.length; level++ ) { final AffineTransform3D mipmapTransform = getMipmapTransforms()[ level ]; currentSourceTransforms[ level ].set( reg ); currentSourceTransforms[ level ].concatenate( mipmapTransform ); } } else { for ( final AffineTransform3D t : currentSourceTransforms ) t.identity(); } }
viewerState.getViewerTransform( sourceToViewer ); source.getSpimSource().getSourceTransform( timepoint, 0, sourceTransform ); sourceToViewer.concatenate( sourceTransform ); boxsource.setSourceToViewer( sourceToViewer ); boxsource.setSourceInterval( source.getSpimSource().getSource( timepoint, 0 ) );
/** * Can be used by derived classes in the {@link #draw(Graphics2D)} method to * get the current transform from 2D source coordinates to screen * coordinates. * * @param transform */ protected void getCurrentTransform2D( final AffineTransform2D transform ) { info.getViewerTransform( tmp ); tmp.concatenate( sourceTransform ); transform.set( tmp.get( 0, 0 ), tmp.get( 0, 1 ), tmp.get( 0, 3 ), tmp.get( 1, 0 ), tmp.get( 1, 1 ), tmp.get( 1, 3 ) ); }
@Override public void handle(CellEditEvent< RegistrationExplorerRow, String > event) { RegistrationExplorerRow row = event.getRowValue().getValue(); if (row.rowType != RegistrationExplorerRowType.REGISTRATION) return; ViewTransform vtOld = viewRegistrations.getViewRegistration( row.vd ).getTransformList().get( row.transformIndex ); AffineTransform3D newT = new AffineTransform3D(); newT.concatenate( vtOld.asAffine3D() ); newT.set( Double.parseDouble( event.getNewValue() ), matRow, matColumn ); ViewTransform vtNew = new ViewTransformAffine( vtOld.getName(), newT ); viewRegistrations.getViewRegistration( row.vd ).getTransformList().remove( row.transformIndex ); viewRegistrations.getViewRegistration( row.vd ).getTransformList().add( row.transformIndex, vtNew ); viewRegistrations.getViewRegistration( row.vd ).updateModel(); explorer.viewSetupExplorer.getPanel().bdvPopup().updateBDV(); updateTree(); }
private static < T > RandomAccessible< T > getTransformedSource( final ViewerState viewerState, final Source< T > source, final AffineTransform3D screenScaleTransform, final int mipmapIndex, final CacheHints cacheHints ) { final int timepoint = viewerState.getCurrentTimepoint(); final RandomAccessibleInterval< T > img = source.getSource( timepoint, mipmapIndex ); if ( VolatileCachedCellImg.class.isInstance( img ) ) ( ( VolatileCachedCellImg< ?, ? > ) img ).setCacheHints( cacheHints ); final Interpolation interpolation = viewerState.getInterpolation(); final RealRandomAccessible< T > ipimg = source.getInterpolatedSource( timepoint, mipmapIndex, interpolation ); final AffineTransform3D sourceToScreen = new AffineTransform3D(); viewerState.getViewerTransform( sourceToScreen ); final AffineTransform3D sourceTransform = new AffineTransform3D(); source.getSourceTransform( timepoint, mipmapIndex, sourceTransform ); sourceToScreen.concatenate( sourceTransform ); sourceToScreen.preConcatenate( screenScaleTransform ); return RealViews.affine( ipimg, sourceToScreen ); }
model.concatenate( s ); m.concatenate( mrImgLoader.getSetupImgLoader( viewId.getViewSetupId() ).getMipmapTransforms()[ bestLevel ] );
mipMapTransform.concatenate( additonalDS );
bdv.getViewer().getState().getViewerTransform( transform ); transform = transform.concatenate( applied );
final AffineTransform3D sourceTransform = new AffineTransform3D(); source.getSourceTransform( timepoint, mipmapIndex, sourceTransform ); sourceToScreen.concatenate( sourceTransform ); final double[] zero = new double[] { 0, 0, 0 }; final double[] tzero = new double[ 3 ];
final AffineTransform3D sourceTransform = new AffineTransform3D(); source.getSourceTransform( timepoint, mipmapIndex, sourceTransform ); sourceToScreen.concatenate( sourceTransform ); sourceToScreen.preConcatenate( screenScaleTransform );
final AffineTransform3D globalToSource = sourceToGlobal.inverse(); final AffineTransform3D cropToSource = globalToSource.copy(); cropToSource.concatenate( cropToGlobal );
0, 1, 0, 0, 0, 0, 1, -dd * stepSize * step ); affine.concatenate( tGV ); renderState.setViewerTransform( affine ); renderer.requestRepaint();