code: public static DMatrixRMaj constraint(TrifocalTensor tensor,
  											Point2D_F64 p1, Point2D_F64 p2, Point2D_F64 p3,
  											DMatrixRMaj ret)
  	{
  		if( ret == null )
  			ret = new DMatrixRMaj(3,3);
  
  		DMatrixRMaj sum = new DMatrixRMaj(3,3);
  
  		CommonOps_DDRM.add(p1.x,tensor.T1,p1.y,tensor.T2,sum);
  		CommonOps_DDRM.add(sum,tensor.T3,sum);
  
  		DMatrixRMaj cross2 = GeometryMath_F64.crossMatrix(p2.x,p2.y,1,null);
  		DMatrixRMaj cross3 = GeometryMath_F64.crossMatrix(p3.x,p3.y,1,null);
  
  		DMatrixRMaj temp = new DMatrixRMaj(3,3);
  
  		CommonOps_DDRM.mult(cross2,sum,temp);
  		CommonOps_DDRM.mult(temp, cross3, ret);
  
  		return ret;
  	}
docs: <p>
  Trifocal tensor with point-point-point correspondence:<br>
  [p2]<sub>x</sub>(sum p1<sup>i</sup>*T<sub>i</sub>)[p3]<sub>x</sub> = 0
  </p>
  
  @param tensor Trifocal tensor
  @param p1 A point in the first view.
  @param p2 A point in the second view.
  @param p3 A point in the third view.
  @param ret Optional storage for output. 3x3 matrix.  Modified.
  @return Result of applying the constraint.  With perfect inputs will be zero.