code: public static EstimateNofEpipolar fundamental_N(EnumFundamental which )
  	{
  		switch( which ) {
  			case LINEAR_8:
  				return new Estimate1toNofEpipolar(new WrapFundamentalLinear8(true));
  
  			case LINEAR_7:
  				return new WrapFundamentalLinear7(true);
  		}
  
  		throw new IllegalArgumentException("Unknown algorithm "+which);
  	}
docs: <p>
  Returns an algorithm for estimating a fundamental or essential matrix given a set of
  {@link AssociatedPair} in pixel coordinates.  The number of hypotheses returned and minimum number of samples
  is dependent on the implementation.  The ambiguity from multiple hypotheses can be resolved using other
  sample points and testing additional constraints.
  </p>
  
  <p>
  All estimated epipolar matrices will have the following constraint:<br>
  x'*F*x = 0, where F is the epipolar matrix, x' = currLoc, and x = keyLoc.
  </p>
  
  <p>
  There are more differences between these algorithms than the minimum number of sample points.  Consult
  the literature for information on critical surfaces which will work or not work with each algorithm.  In
  general, algorithm which require fewer samples have less issues with critical surfaces than the 8-point
  algorithm.
  </p>
  
  <p>
  IMPORTANT: When estimating a fundamental matrix use pixel coordinates.  When estimating an essential matrix
  use normalized image coordinates from a calibrated camera.
  </p>
  
  <p>
  IMPORTANT. The number of allowed sample points varies depending on the algorithm.  The 8 point algorithm can
  process 8 or more points.  Both the 5 an 7 point algorithms require exactly 5 and 7 points exactly. In addition
  the 5-point algorithm is only for the calibrated (essential) case.
  </p>
  
  @see boofcv.alg.geo.f.EssentialNister5
  @see boofcv.alg.geo.f.FundamentalLinear7
  @see boofcv.alg.geo.f.FundamentalLinear8
  
  @param which Specifies which algorithm is to be created
  @return Fundamental or essential estimation algorithm that returns multiple hypotheses.