question: public < T extends Point2D > T inverse ( double x , double y , T llp ) { if ( llp == null ) { llp = ( T ) new LatLonPoint . Double ( ) ; } x -= wx ; y = hy - y ; double rho = Math . sqrt ( x * x + y * y ) ; if ( rho == 0 ) { Debug . message ( "proj" , "Gnomonic.inverse: center!" ) ; llp . setLocation ( ProjMath . radToDeg ( centerX ) , ProjMath . radToDeg ( centerY ) ) ; return llp ; } double c = Math . atan2 ( rho , scaled_radius ) ; double cosC = Math . cos ( c ) ; double sinC = Math . sin ( c ) ; double lat = Math . asin ( cosC * sinCtrLat + ( y * sinC * ( cosCtrLat / rho ) ) ) ; double lon = centerX + Math . atan2 ( ( x * sinC ) , ( rho * cosCtrLat * cosC - y * sinCtrLat * sinC ) ) ; if ( Double . isNaN ( lat ) || Double . isNaN ( lon ) ) { Debug . message ( "proj" , "Gnomonic.inverse(): outer space!" ) ; lat = centerY ; lon = centerX ; } llp . setLocation ( Math . toDegrees ( wrapLongitude ( lon ) ) , Math . toDegrees ( normalizeLatitude ( lat ) ) ) ; return llp ; }
target:  Inverse project x,y coordinates into a LatLonPoint.