docs: @SuppressWarnings({"checkstyle:parametername", "checkstyle:magicnumber",
  		"checkstyle:localfinalvariablename", "checkstyle:localvariablename"})
  	private static Point2d WSG84_NTFLamdaPhi(double lambda, double phi) {
  		//---------------------------------------------------------
  		// 0) degree -> radian
  		final double lambda_w = Math.toRadians(lambda);
  		final double phi_w = Math.toRadians(phi);
  
  		//---------------------------------------------------------
  		// 1) geographical coordinates WGS84 (phi_w,lambda_w)
  		//    -> cartesian coordinate WGS84 (x_w,y_w,z_w)
  
  		// Formula from IGN are used from the official downloadable document, and
  		// the two constants, one for each demi-axis, are given by the WGS84 specification
  		// of the ellipsoide.
  		// Ref:
  		// 	http://www.ign.fr/telechargement/MPro/geodesie/CIRCE/NTG_80.pdf
  		//  http://de.wikipedia.org/wiki/WGS84
  		final double a_w = 6378137.0;
  		final double b_w = 6356752.314;
  		// then
  		final double e2_w = (a_w * a_w - b_w * b_w) / (a_w * a_w);
  		// then let the big normal of the WGS84 ellipsoide
  		final double N = a_w / Math.sqrt(1. - e2_w * Math.pow(Math.sin(phi_w), 2.));
  		// let the WGS84 cartesian coordinates:
  		final double X_w = N * Math.cos(phi_w) * Math.cos(lambda_w);
  		final double Y_w = N * Math.cos(phi_w) * Math.sin(lambda_w);
  		final double Z_w = N * (1 - e2_w) * Math.sin(phi_w);
  
  		//---------------------------------------------------------
  		// 2) cartesian coordinate WGS84 (X_w,Y_w,Z_w)
  		//    -> cartesian coordinate NTF (X_n,Y_n,Z_n)
  		//    Ref: http://support.esrifrance.fr/Documents/Generalites/Projections/Generalites/Generalites.htm#2
  		//    No convertion to be done.
  		final double dX = 168.0;
  		final double dY = 60.0;
  		final double dZ = -320.0;
  
  		final double X_n = X_w + dX;
  		final double Y_n = Y_w + dY;
  		final double Z_n = Z_w + dZ;
  
  		//---------------------------------------------------------
  		// 3) cartesian coordinate NTF (X_n,Y_n,Z_n)
  		//    -> geographical coordinate NTF (phi_n,lambda_n)
  
  		// One formula is given by the IGN, and two constants about
  		// the ellipsoide are from the NTF system specification of Clarke 1880.
  		// Ref:
  		//		http://www.ign.fr/telechargement/MPro/geodesie/CIRCE/NTG_80.pdf
  		//		http://support.esrifrance.fr/Documents/Generalites/Projections/Generalites/Generalites.htm#2
  		final double a_n = 6378249.2;
  		final double b_n = 6356515.0;
  		// then
  		final double e2_n = (a_n * a_n - b_n * b_n) / (a_n * a_n);
  		// let the convergence epsilon
  		final double epsilon = 1e-10;
  		// Then try to converge
  		double p0 = Math.atan(Z_n / Math.sqrt(X_n * X_n + Y_n * Y_n) * (1 - (a_n * e2_n) / (Math.sqrt(X_n * X_n + Y_n
  				* Y_n + Z_n * Z_n))));
  		double p1 = Math.atan((Z_n / Math.sqrt(X_n * X_n + Y_n * Y_n)) / (1 - (a_n * e2_n
  				* Math.cos(p0)) / (Math.sqrt((X_n * X_n + Y_n * Y_n) * (1 - e2_n * Math.pow(Math.sin(p0), 2))))));
  		while (Math.abs(p1 - p0) >= epsilon) {
  			p0 = p1;
  			p1 = Math.atan((Z_n / Math.sqrt(X_n * X_n + Y_n * Y_n)) / (1 - (a_n * e2_n * Math.cos(p0))
  					/ (Math.sqrt((X_n * X_n + Y_n * Y_n) * (1 - e2_n * Math.pow(Math.sin(p0), 2))))));
  		}
  
  		final double phi_n = p1;
  		final double lambda_n = Math.atan(Y_n / X_n);
  
  		return new Point2d(lambda_n, phi_n);
  	}