MeshLib C++ Docs
Loading...
Searching...
No Matches
MRQuadraticForm.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRSymMatrix2.h"
4#include "MRSymMatrix3.h"
5
6namespace MR
7{
10
11
14template <typename V>
16{
17 using T = typename V::ValueType;
18 using SM = typename V::SymMatrixType;
19
21 T c = 0;
22
24 [[nodiscard]] T eval( const V & x ) const { return dot( x, A * x ) + c; }
25
27 void addDistToOrigin( T weight ) { A += SM::diagonal( weight ); }
28
30 void addDistToPlane( const V & planeUnitNormal ) { A += outerSquare( planeUnitNormal ); }
31 void addDistToPlane( const V & planeUnitNormal, T weight ) { A += weight * outerSquare( planeUnitNormal ); }
32
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 ) ); }
36};
37
41template <typename V>
42[[nodiscard]] MRMESH_API std::pair< QuadraticForm<V>, V > sum(
43 const QuadraticForm<V> & q0, const V & x0,
44 const QuadraticForm<V> & q1, const V & x1,
45 bool minAmong01 = false );
46
50template <typename V>
51[[nodiscard]] MRMESH_API QuadraticForm<V> sumAt(
52 const QuadraticForm<V> & q0, const V & x0,
53 const QuadraticForm<V> & q1, const V & x1,
54 const V & pos );
55
56}
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
Definition MRQuadraticForm.h:16