final public void set( final AffineTransform3D m ) { a.m00 = m.a.m00; a.m10 = m.a.m10; a.m20 = m.a.m20; a.m01 = m.a.m01; a.m11 = m.a.m11; a.m21 = m.a.m21; a.m02 = m.a.m02; a.m12 = m.a.m12; a.m22 = m.a.m22; a.m03 = m.a.m03; a.m13 = m.a.m13; a.m23 = m.a.m23; inverse.a.m00 = m.inverse.a.m00; inverse.a.m10 = m.inverse.a.m10; inverse.a.m20 = m.inverse.a.m20; inverse.a.m01 = m.inverse.a.m01; inverse.a.m11 = m.inverse.a.m11; inverse.a.m21 = m.inverse.a.m21; inverse.a.m02 = m.inverse.a.m02; inverse.a.m12 = m.inverse.a.m12; inverse.a.m22 = m.inverse.a.m22; inverse.a.m03 = m.inverse.a.m03; inverse.a.m13 = m.inverse.a.m13; inverse.a.m23 = m.inverse.a.m23; updateDs(); inverse.updateDs(); }
@Override public void set( final double[][] values ) { assert values.length >= 3 && values[ 0 ].length >= 4 && values[ 1 ].length >= 4 && values[ 2 ].length >= 4: "Input dimensions do not match. A 3d affine matrix is a 3x4 matrix."; a.m00 = values[ 0 ][ 0 ]; a.m01 = values[ 0 ][ 1 ]; a.m02 = values[ 0 ][ 2 ]; a.m03 = values[ 0 ][ 3 ]; a.m10 = values[ 1 ][ 0 ]; a.m11 = values[ 1 ][ 1 ]; a.m12 = values[ 1 ][ 2 ]; a.m13 = values[ 1 ][ 3 ]; a.m20 = values[ 2 ][ 0 ]; a.m21 = values[ 2 ][ 1 ]; a.m22 = values[ 2 ][ 2 ]; a.m23 = values[ 2 ][ 3 ]; updateDs(); invert(); inverse.updateDs(); }
@Override public void set( final double... values ) { assert values.length >= 12: "Input dimensions do not match. A 3d affine matrix is a 3x4 matrix."; a.m00 = values[ 0 ]; a.m01 = values[ 1 ]; a.m02 = values[ 2 ]; a.m03 = values[ 3 ]; a.m10 = values[ 4 ]; a.m11 = values[ 5 ]; a.m12 = values[ 6 ]; a.m13 = values[ 7 ]; a.m20 = values[ 8 ]; a.m21 = values[ 9 ]; a.m22 = values[ 10 ]; a.m23 = values[ 11 ]; updateDs(); invert(); inverse.updateDs(); }
@Override final public AffineTransform3D concatenate( final AffineGet affine ) { assert affine.numSourceDimensions() >= 3: "Only >=3d affine transformations can be concatenated to a 3d affine transformation."; a.concatenate( affine.getRowPackedCopy() ); invert(); updateDs(); inverse.updateDs(); return this; }
@Override final public AffineTransform3D preConcatenate( final AffineGet affine ) { assert affine.numSourceDimensions() == 3: "Only 3d affine transformations can be preconcatenated to a 3d affine transformation."; a.preConcatenate( affine.getRowPackedCopy() ); invert(); updateDs(); inverse.updateDs(); return this; }
/** * Rotate * * @param axis * 0=x, 1=y, 2=z * @param d * angle in radians */ public void rotate( final int axis, final double d ) { final double dcos = Math.cos( d ); final double dsin = Math.sin( d ); switch ( axis ) { case 0: a.rotateX( dcos, dsin ); break; case 1: a.rotateY( dcos, dsin ); break; default: a.rotateZ( dcos, dsin ); break; } invert(); updateDs(); inverse.updateDs(); }