docs: protected void createA(List<AssociatedPair> points, DMatrixRMaj A ) {
  		A.reshape(points.size(),9, false);
  		A.zero();
  
  		Point2D_F64 f_norm = new Point2D_F64();
  		Point2D_F64 s_norm = new Point2D_F64();
  
  		final int size = points.size();
  		for( int i = 0; i < size; i++ ) {
  			AssociatedPair p = points.get(i);
  
  			Point2D_F64 f = p.p1;
  			Point2D_F64 s = p.p2;
  
  			// normalize the points
  			N1.apply(f, f_norm);
  			N2.apply(s, s_norm);
  
  			// perform the Kronecker product with the two points being in
  			// homogeneous coordinates (z=1)
  			A.unsafe_set(i,0,s_norm.x*f_norm.x);
  			A.unsafe_set(i,1,s_norm.x*f_norm.y);
  			A.unsafe_set(i,2,s_norm.x);
  			A.unsafe_set(i,3,s_norm.y*f_norm.x);
  			A.unsafe_set(i,4,s_norm.y*f_norm.y);
  			A.unsafe_set(i,5,s_norm.y);
  			A.unsafe_set(i,6,f_norm.x);
  			A.unsafe_set(i,7,f_norm.y);
  			A.unsafe_set(i,8,1);
  		}
  	}