docs: private void project3(double[] output) {
  		int observationIndex = 0;
  		for( int viewIndex = 0; viewIndex < structure.views.length; viewIndex++ ) {
  			SceneStructureProjective.View view = structure.views[viewIndex];
  			SceneObservations.View obsView = observations.views[viewIndex];
  			for (int i = 0; i < obsView.size(); i++) {
  				obsView.get(i,observedPixel);
  				SceneStructureMetric.Point worldPt = structure.points[observedPixel.index];
  				worldPt.get(p3);
  				PerspectiveOps.renderPixel(view.worldToView, p3, predictedPixel);
  				int outputIndex = observationIndex*2;
  				output[outputIndex  ] = predictedPixel.x - observedPixel.x;
  				output[outputIndex+1] = predictedPixel.y - observedPixel.y;
  				observationIndex++;
  			}
  		}
  	}