2D curve functions. More...
Static Public Member Functions  
static Point2Dd[]  Resample (Point2Dd[] curve, int resampledCurveLength) 
Resamples a 2dimensional curve via linear interpolation assuming that the "speed" of the time mapping is constant. More...  
static Point2Dd[]  IntersectWithLine (Point2Dd[] curve, Line line) 
Intersects a 2D curve with a line. More...  
static Alignment2DResult  Align (Point2Dd[] curve, Point2Dd[] curveToBeAligned, AlignmentSettings config) 
Aligns two 2D curves via an iterative closest point method considering consensus correspondence for better shape alignment. More...  
static Point2Dd[]  Merge (Point2Dd[] curve1, Point2Dd[] curve2, StartSelection startSelection) 
Merges two curves into one curve with interpolation. Takes two curves and merges them into one combined curve. If they overlap, an interpolation method is used to find a suitable approximation. This interpolation is done when switching between the two curves while the points are interleaved. The order in which the points are interleaved is defined by the closest neighbour for each point from curve2 to curve1 . More...  
2D curve functions.

static 
Aligns two 2D curves via an iterative closest point method considering consensus correspondence for better shape alignment.
The method used here is a version of the ICP (closest iterative point) method. It uses a consensus metric to find the correspondence between points to stabilize the iterations needed in the alignment method. It supports only rigid transformations for the alignment. If not enough points within a given consens are found a classical ICP step is perfomed by finding corresponences soley based on nearest neighbours without any feasibility check.
curve  Reference curve. 
curveToBeAligned  Curve to be aligned to curve . 
config  Configuration of alignment. 
ArgumentNullException  When curve or curveToBeAligned is null. 
ArgumentException  When curve or curveToBeAligned is empty. 
CvbException  When an error during alignment occurs. 
Intersects a 2D curve with a line.
The line is defined by the hessian normal form: normal * x = d, with normal = 1 and d > 0.
The points have to be ordered by ascending x coordinates.
curve  Curve to be intersected. 
line  Line to interesect with. 
ArgumentNullException  When curve is null. 
ArgumentException  When curve is empty. 
CvbException  When an error during intersecting occurs. 

static 
Merges two curves into one curve with interpolation. Takes two curves and merges them into one combined curve. If they overlap, an interpolation method is used to find a suitable approximation. This interpolation is done when switching between the two curves while the points are interleaved. The order in which the points are interleaved is defined by the closest neighbour for each point from curve2 to curve1 .
This method works with curves in 2D.
If startSelection is set to StartSelection.Best, then the pair of curves curve1 and curve2 are sorted from left to right. This means, the algorithm checks which starting point from the two staring points is the best starting point for the merged curve. To make this decision the distance from each possible starting point to the other given curve is calculated and the point with the highest distance is taken as the overall starting point for the new generated merged curve. This method does work well for regular curves (not self intercepting curves). It can be switched off to save computation time if the caller is sure about the correct order.
The points on the curve are evaluated in the order in which they are listed. We assume a ordered pointset (not ordered by axis, but ordered according to the curve).
curve1  First curve to merge. 
curve2  Second curve to merge. 
startSelection  Which start point to use for the new curve. 
ArgumentNullException  When curve1 or curve2 is null. 
ArgumentException  When curve1 or curve2 do not contain points. 
CvbException  When an error during merging occurs. 
Resamples a 2dimensional curve via linear interpolation assuming that the "speed" of the time mapping is constant.
The points have to be ordered by ascending x coordinates.
curve  Curve to be resampled. 
resampledCurveLength  Length of the resulting curve. 
ArgumentNullException  When curve is null. 
ArgumentException  When curve is empty. 
ArgumentOutOfRangeException  When resampledCurveLength is > 1. 
CvbException  When an error during resampling occurs. 