18 #define max(a,b) (((a) > (b)) ? (a) : (b)) 21 #define min(a,b) (((a) < (b)) ? (a) : (b)) 37 template<
class _B
idIt>
inline 41 for (; _First != _Last && _First != --_Last; ++_First)
42 ::std:: iter_swap(_First, _Last);
53 m_InfoAtVertices.resize(model.GetNumOfVerts());
101 return vector<EdgePoint>();
103 vector<EdgePoint> path;
104 vector<int> vertexNodes;
106 vertexNodes.push_back(index);
112 index = indexOfParent;
118 vertexNodes.push_back(index);
120 int indexOfSourceVert = index;
122 for (
int i = 0; i < (int)vertexNodes.size() - 1; ++i)
124 int lastVert = vertexNodes[i];
137 path.push_back(
EdgePoint(edgeIndex, proportion));
140 double oldProprotion = proportion;
142 if (
abs(proportion - 1) < 1e-2)
145 reverse(path.begin(), path.end());
146 copy(path.begin(), path.end(), back_inserter(path2));
149 else if (proportion >= 0 && proportion <= 1)
151 proportion =
max(proportion, 0);
165 reverse(path.begin(), path.end());
166 copy(path.begin(), path.end(), back_inserter(path2));
172 reverse(path.begin(), path.end());
173 copy(path.begin(), path.end(), back_inserter(path2));
180 proportion =
max(proportion, 0);
181 proportion =
min(proportion, 1);
188 path.push_back(
EdgePoint(indexOfSourceVert));
189 reverse(path.begin(), path.end());
CExactDGPMethod(const CRichModel &inputModel, int source)
virtual void Initialize()
pair< double, double > GetNew2DCoordinatesByRotatingAroundLeftChildEdge(int edgeIndex, const pair< double, double > &input2DCoordinates) const
vector< double > m_scalarField
virtual void CollectExperimentalResults()
double ProportionOnLeftEdgeByImage(int edgeIndex, const pair< double, double > &coord, double proportion) const
const vector< double > & GetDistanceField() const
void reverse(_BidIt _First, _BidIt _Last)
pair< double, double > coordOfOppositeVert
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const AbsReturnType abs() const
const CEdge & Edge(int edgeIndex) const
double ProportionOnRightEdgeByImage(int edgeIndex, const pair< double, double > &coord, double proportion) const
virtual void CollectExperimentalResults()=0
pair< double, double > GetNew2DCoordinatesByRotatingAroundRightChildEdge(int edgeIndex, const pair< double, double > &input2DCoordinates) const
int GetNumOfComponents() const
virtual vector< EdgePoint > BacktraceShortestPath(int end) const
bool IsExtremeEdge(int edgeIndex) const
const vector< pair< int, double > > & Neigh(int root) const
int GetNumOfVerts() const
virtual void Initialize()=0
pair< double, double > GetNew2DCoordinatesByReversingCurrentEdge(int edgeIndex, const pair< double, double > &input2DCoordinates) const
vector< InfoAtVertex > m_InfoAtVertices
virtual int GetAncestor(int vIndex) const