1 Description
For a given set of planar points, I want to generate an interplatory curve going through these points. Because human sightseeing are more sensitive to maxima and minima curvature of a curve, we require the control to be local maximum curvature, (in the meaning of absolute value), so that user can use the interpolated points as control points to manipulate the curve. Also, when the control points are lying on a circle, we want the generated curve to be exact the circle.
2 Importance
Approximation curves such as Catmull-Rom splines, cubic Bezier curves are widely used in curve modelling. However the approximation splines used as curve editing tools in art design, especially the "Pen tool" in image editing softwares, require lots of skills and experiences for users. Beginners need to struggle to learn to use the off-curve points to control the curve. So interplatory curves are very suitable for intuitively control curve shapes.
Circular shapes together with elliptical shapes are very common in our daily life. So a powerful curve editing tool should have the ability to reproduce circles when it's possible.
3 Previous work
Kappa curve [1] provide a scheme to generate a piece-wise quadratic interplatory curve having all input points as local maximum curvature points. Also the curve is $G^2$ continuous except for several inflection points.
Functional Maps [2] indicated that if we have two manifold $M$ and $N$, and a bijection between them \[T:M\to N\] then this bijection maps induce a bijection between real functions $\mathcal{F}(M,\mathbb{R})$ on $M$ and $\mathcal{F}(N,\mathbb{R})$ on $N$ \[T_F:\mathcal{F}(M,\mathbb{R})\to \mathcal{F}(N,\mathbb{R})\] The claim is that $T$ and $T_F$ are bijection, i.e. given $T_F$ we can compute unique $T$. And if we find a basis of $\mathcal{F}(M,\mathbb{R})$, $T_F$ can be written as a (infinity) matrix. This method has been used as recovering the map between two manifolds using given relationships between function values on the two manifolds.
Based on Functional map, Rustamov [3] came up with a method to compare the differences between two manifolds. Given three manifolds A, B and C, one can compute the difference between A and B and apply the difference to C to get a manifold D.
4 Proposal
$\kappa$-Curve satisfy all the desired geometric properties except for that it cannot reproduce a circle. So, I want to modify $\kappa$-Curve to reproduce a circle. Notice that a circle and a simple closed curve are all 1-manifolds and indeed there is a bijection between them. So, the final curve should be a deformation of a circle. To achieve this goal, there're mainly three approaches.
4.1 Shape differences
Given a set of planar points $\{P_i\}_{i=1}^n$, one can generate a piece-wise quadratic kappa curve $$c_i(t)_{i=1}^n, t\in[0,1].$$ This is a 1-manifold and I call it B. I can move $\{P_i\}$ on a circle as $\{Q_i\}$ via some arc length sampling. Then there's a kappa curve interpolating $\{Q_i\}$ near a circle but not a circle. I call the piece-wise quadratic curve $$\tilde{c}_i(t)_{i=1}^n, t\in[0,1]$$ manifold A. And the circle of $\{Q_i\}$ is a manifold C. So, I can compute a difference between A and B and apply the difference to C to get a circular shape D. D is the final curve I want.
However, this method may have a problem that there's no guarantee that the result curve is $G^2$ continuous or interpolate $\{P_i\}$s as local maximum curvature points. Also, the result curve is likely to be a non-polynomial curve.
4.2 Weight function
$\kappa$-Curve has its rational quadratic version, however the weight choice is the biggest problem. I can still use the shape difference bewteen $\kappa$-Curve and circular splines. But in this method, only weight functions of the rational quadratic curve are optimized. To do this, the weights may be used in non-linear optimization.
5 Originality
$\kappa$-Curve and Functional Map are developed papers and I using a new view to apply the functional map method to traditional curve modelling. This view is changing the whole basic construction of $\kappa$-Curve. So, the originality should be that I'm using some other method to refine an existing curve theory.
6 List of goals
This course project has two milestones: update and final report. So, I separate the work as following:
6.1 Goals for update
- Implement shape differences based on functional map.
- Find a functional map between $\kappa$-Curve and its circular control points.
- Come up with the method using weights in the optimization for best shape differences.
6.2 Goals for final report
- Try different functional basis.
- Go over all the methods above and find a good one.
- Generate the new family of curves.