public static Vector3D_F64 constraint(TrifocalTensor tensor,
										  Vector3D_F64 l1, Vector3D_F64 l2, Vector3D_F64 l3,
										  @Nullable Vector3D_F64 ret)
	{
		if( ret == null )
			ret = new Vector3D_F64();

		double x = GeometryMath_F64.innerProd(l2, tensor.T1, l3);
		double y = GeometryMath_F64.innerProd(l2, tensor.T2, l3);
		double z = GeometryMath_F64.innerProd(l2, tensor.T3, l3);

		GeometryMath_F64.cross(new Vector3D_F64(x, y, z), l1, ret);

		return ret;
	}
public static Vector3D_F64 constraint ( TrifocalTensor tensor , Vector3D_F64 l1 , Vector3D_F64 l2 , Vector3D_F64 l3 , @ Nullable Vector3D_F64 ret ) { if ( ret == null ) ret = new Vector3D_F64 ( ) ; double x = GeometryMath_F64 . innerProd ( l2 , tensor . T1 , l3 ) ; double y = GeometryMath_F64 . innerProd ( l2 , tensor . T2 , l3 ) ; double z = GeometryMath_F64 . innerProd ( l2 , tensor . T3 , l3 ) ; GeometryMath_F64 . cross ( new Vector3D_F64 ( x , y , z ) , l1 , ret ) ; return ret ; }
<p>
Trifocal tensor with line-line-line correspondence:<br>
(l2<sup>T</sup>*[T1,T2,T3]*L2)*[l1]<sub>x</sub> = 0
</p>

@param tensor Trifocal tensor
@param l1 A line in the first view.
@param l2 A line in the second view.
@param l3 A line in the third view.
@param ret Storage for output.  If null a new instance will be declared.
@return Result of applying the constraint.  With perfect inputs will be zero.