code: public GeometricResult triangulate( List<Point2D_F64> observations ,
  										List<DMatrixRMaj> cameraMatrices,
  										Point4D_F64 found ) {
  		if( observations.size() != cameraMatrices.size() )
  			throw new IllegalArgumentException("Number of observations must match the number of motions");
  
  		LowLevelMultiViewOps.computeNormalization(observations,stats);
  
  		final int N = cameraMatrices.size();
  
  		A.reshape(2*N,4);
  
  		int index = 0;
  
  		for( int i = 0; i < N; i++ ) {
  			index = addView(cameraMatrices.get(i),observations.get(i),index);
  		}
  
  		if( !solverNull.process(A,1, nullspace) )
  			return GeometricResult.SOLVE_FAILED;
  
  		// if the second smallest singular value is the same size as the smallest there's problem
  		double sv[] = solverNull.getSingularValues();
  		Arrays.sort(sv);
  		if( sv[1]*singularThreshold <= sv[0] ) {
  			return GeometricResult.GEOMETRY_POOR;
  		}
  
  		double ns[] = nullspace.data;
  		found.x = ns[0];
  		found.y = ns[1];
  		found.z = ns[2];
  		found.w = ns[3];
  
  		return GeometricResult.SUCCESS;
  	}
docs: <p>
  Given N observations of the same point from two views and a known motion between the
  two views, triangulate the point's position in camera 'b' reference frame.
  </p>
  
  @param observations Observation in each view in pixel coordinates. Not modified.
  @param cameraMatrices Camera projection matrices, e.g. x = P*X.  3 by 4 projectives. Not modified.
  @param found Output, found 3D point in homogenous coordinates.  Modified.
  @return true if triangulation was successful or false if it failed