main/src/georegression/struct/se/SpecialEuclideanOps_F64.java
public static Se2_F64 toSe2( DMatrixRMaj H, Se2_F64 ret ) {
		if( H.numCols != 3 || H.numRows != 3 )
			throw new IllegalArgumentException( "The homogeneous matrix must be 3 by 3 by definition." );

		if( ret == null )
			ret = new Se2_F64();

		ret.setTranslation( (double) H.get( 0, 2 ), (double) H.get( 1, 2 ) );

		double c = (double) H.get( 0, 0 );
		double s = (double) H.get( 1, 0 );

		ret.setYaw( Math.atan2( s, c ) );

		return ret;
	}
public static Se2_F64 toSe2( DMatrixRMaj H, Se2_F64 ret ) {
		if( H.numCols != 3 || H.numRows != 3 )
			throw new IllegalArgumentException( "The homogeneous matrix must be 3 by 3 by definition." );

		if( ret == null )
			ret = new Se2_F64();

		ret.setTranslation( (double) H.get( 0, 2 ), (double) H.get( 1, 2 ) );

		double c = (double) H.get( 0, 0 );
		double s = (double) H.get( 1, 0 );

		ret.setYaw( Math.atan2( s, c ) );

		return ret;
	}
public static Se2_F64 toSe2 ( DMatrixRMaj H , Se2_F64 ret ) { if ( H . numCols != 3 || H . numRows != 3 ) throw new IllegalArgumentException ( "The homogeneous matrix must be 3 by 3 by definition." ) ; if ( ret == null ) ret = new Se2_F64 ( ) ; ret . setTranslation ( ( double ) H . get ( 0 , 2 ) , ( double ) H . get ( 1 , 2 ) ) ; double c = ( double ) H . get ( 0 , 0 ) ; double s = ( double ) H . get ( 1 , 0 ) ; ret . setYaw ( Math . atan2 ( s , c ) ) ; return ret ; }
Converts a homogeneous representation into {@link Se2_F64}.

@param H   Homogeneous 3 by 3 matrix.
@param ret If not null where the results are written to.
@return Se3_F64 transform.
Converts a homogeneous representation into { @link Se2_F64 } .