public InteractiveViewer2D( final int width, final int height, final RandomAccessible< T > source, final Converter< ? super T, ARGBType > converter ) { this( width, height, source, new AffineTransform2D(), converter ); }
@Override public AffineTransform2D createTransform() { return new AffineTransform2D(); }
@Override public AffineTransform2D copy() { final AffineMatrix2D ma = new AffineMatrix2D(); ma.m00 = a.m00; ma.m10 = a.m10; ma.m01 = a.m01; ma.m11 = a.m11; ma.m02 = a.m02; ma.m12 = a.m12; return new AffineTransform2D( ma ); }
@Override public void refineTileOrAngleInfo(IFormatReader r, List< TileOrAngleInfo > infos) { Double rotation = null; Object tmp = r.getGlobalMetadata().get( "Rotate" ); if (tmp != null) rotation = (Double) tmp; if (rotation != null) { rotation -= 90; AffineTransform2D tr = new AffineTransform2D(); tr.rotate( -1.0 * rotation / 360.0 * 2 * Math.PI ); for (TileOrAngleInfo info: infos) { double[] loc = new double[] {info.locationX == null ? 0 : info.locationX, info.locationY == null ? 0 : info.locationY}; tr.apply( loc, loc ); info.locationX = loc[0]; info.locationY = loc[1]; } } }
public static void main(String[] args) { Collection<Collection<Pair<RealInterval, AffineGet>>> viewGroups = new ArrayList<>(); Collection<Pair<RealInterval, AffineGet>> viewGroup1 = new ArrayList<>(); viewGroup1.add( new ValuePair<>(Intervals.createMinMaxReal( 0,0,1,1 ), new Translation( 0, 0 )) ); AffineTransform2D rot = new AffineTransform2D(); rot.rotate( Math.PI / 4 ); viewGroup1.add( new ValuePair<>(Intervals.createMinMaxReal( 0,0,1,1 ), rot) ); Collection<Pair<RealInterval, AffineGet>> viewGroup2 = new ArrayList<>(); viewGroup2.add( new ValuePair<>(Intervals.createMinMaxReal( 0,0,1,1 ), new Translation( -0.5, 0 )) ); viewGroup2.add( new ValuePair<>(Intervals.createMinMaxReal( 0,0,1,1 ), new Translation( 0, 1.1 )) ); viewGroups.add( viewGroup1 ); viewGroups.add( viewGroup2 ); System.out.println( TransformationTools.printRealInterval( getMinBoundingInterval( viewGroups ) ) ); }
protected AffineTransform2D( final AffineMatrix2D a ) { this.a = a; d0 = new RealPoint( 2 ); d1 = new RealPoint( 2 ); ds = new RealPoint[] { d0, d1 }; updateDs(); inverse = new AffineTransform2D( this ); invert(); inverse.updateDs(); }