Measure for the number of curves in a shape in $\mathbb{R}^2$

92 Views Asked by At

I am looking for a measure of the following form:

Say we have some geometric ribbon-like "shape/curve' in $\mathbb{R}^2$. Example:

enter image description here

How can we model the number of "curves" (twists, turns, change of direction, inflection point) such a shape has? What are the mathematical tools that are useful for this.

In my preliminary research, I looked into bezier curves. Maybe the number of control points is a useful measure in that regard.

To add more clarity, this is similar in intent to how "topology is the study of how many holes a shape has".

I am not sure.

Thanks!

3

There are 3 best solutions below

0
On

Such a count of course depends of how much twisted is twisted enough. One way of quantifying a turn is looking at “turning angle”. For example lets say that a curves “turns” when it turns $\pi / 2$ radians. For counting such turns, parametrise the curve as $\lambda(t)$, choose an initial velocity vector, $\lambda’(t_0)$ and calculate the first $t_1$ such that $\lambda’(t_0) \perp \lambda’(t_1)$. This will be one turn. Then continue with replacing $\lambda’(t_0)$ with $\lambda’(t_1)$. Counting such, a circle parametrised by $(cos (\phi), sin (\phi))$ has four turns. And taking arbitrary $\theta$ in place of $ \pi /2$, it will have $2 \pi / \theta $ number of turns.

0
On

Counting the number of Bezier control points will not give you the sort of measure you want. Take a given shape composed of Bezier curves. We could divide each Bezier curve into two, which would double the number of control points (roughly) but would not change the shape at all.

It's not very clear what kind of complexity measure you want, but it seems to have something to do with how much the curve twists and turns. If so, you can count inflexion points, or you can measure the angle turned through by the curve (as suggested in the other answer).

A very simple approach: approximate your ribbon by a polyline (if it's not a polyline already). At each junction in the polyline, measure the angle between the in-coming line segment and the out-going one. Add up these angles.

0
On

I would like to additionally provide a direct approach that allows to count the number of points of inflection using the first and second derivative of the curve.

Suppose your curve is given as a parametric curve $\gamma: \mathbb{R} \mapsto \mathbb{R}^2$ with $\gamma(t) = (x(t),y(t))$. Then, the direction (or tangent) of the curve is given by its derivative $\gamma'(t) = (x'(t),y'(t))$ and the direction in which the direction is changing is given by its second derivative $\gamma''(t) = (x''(t),y''(t))$. Now, denote by $\theta(t)$ the angle, measured counter clockwise, between $\gamma'(t)$ and $\gamma''(t)$. If $\theta(t)$ is between $0°$ and $180°$, then the curve is turning left and if the angle is between $180°$ and $360°$, the curve is turning right. We can use this observation, together with the fact that the determinant of the $2\times2$ matrix obtained by juxtaposing two 2D-vectors gives

$$ \det(\gamma'(t),\gamma''(t)) = \det\begin{pmatrix} x'(t) & x''(t)\\y'(t)&y''(t)\end{pmatrix} = |\gamma'(t)|~|\gamma''(t)| \sin(\theta(t)). $$

Hence, if the determinant $x'(t)y''(t) - y'(t)x''(t)$ changes sign, the curve changes from left-turning to right-turning or vice-versa. The total number of points of inflection is then equal to the number of times $\det(\gamma'(t),\gamma''(t))$ changes sign.

Example:

Consider the curve $\gamma(t) = (t, t^3) $. Then $\gamma'(t) = (1, 3t^2)$ and $\gamma''(t) = (0, 6t)$. Hence,

$$ \det(\gamma'(t),\gamma''(t)) = 6t. $$

The curve changes from right-turning to left-turning at $t=0$ and thus has a point of inflection at $\gamma(0) =(0, 0)$. For an illustration, see here.