17 using T =
typename V::ValueType;
18 using SM =
typename V::SymMatrixType;
24 [[nodiscard]]
T eval(
const V & x )
const {
return dot( x,
A * x ) +
c; }
30 void addDistToPlane(
const V & planeUnitNormal ) {
A += outerSquare( planeUnitNormal ); }
31 void addDistToPlane(
const V & planeUnitNormal,
T weight ) {
A += weight * outerSquare( planeUnitNormal ); }
34 void addDistToLine(
const V & lineUnitDir ) {
A += SM::identity() - outerSquare( lineUnitDir ); }
35 void addDistToLine(
const V & lineUnitDir,
T weight ) {
A += weight * ( SM::identity() - outerSquare( lineUnitDir ) ); }
42[[nodiscard]] MRMESH_API std::pair< QuadraticForm<V>, V >
sum(
45 bool minAmong01 =
false );
typename V::ValueType T
Definition MRQuadraticForm.h:17
T c
Definition MRQuadraticForm.h:21
void addDistToOrigin(T weight)
adds to this squared distance to the origin point
Definition MRQuadraticForm.h:27
MRMESH_API std::pair< QuadraticForm< V >, V > sum(const QuadraticForm< V > &q0, const V &x0, const QuadraticForm< V > &q1, const V &x1, bool minAmong01=false)
if true then the minimum is selected only between points x0 and x1
void addDistToLine(const V &lineUnitDir, T weight)
Definition MRQuadraticForm.h:35
void addDistToLine(const V &lineUnitDir)
adds to this squared distance to line passing via origin with given unit direction
Definition MRQuadraticForm.h:34
SM A
Definition MRQuadraticForm.h:20
T eval(const V &x) const
evaluates the function at given x
Definition MRQuadraticForm.h:24
void addDistToPlane(const V &planeUnitNormal)
adds to this squared distance to plane passing via origin with given unit normal
Definition MRQuadraticForm.h:30
typename V::SymMatrixType SM
Definition MRQuadraticForm.h:18
MRMESH_API QuadraticForm< V > sumAt(const QuadraticForm< V > &q0, const V &x0, const QuadraticForm< V > &q1, const V &x1, const V &pos)
void addDistToPlane(const V &planeUnitNormal, T weight)
Definition MRQuadraticForm.h:31
only for bindings generation
Definition MRCameraOrientationPlugin.h:8