Plane Curve
Signed curvature
Suppose \(\gamma: \mathbb R\rightarrow \mathbb R^2\) is a unit-speed curve, let \(\mathbf t = \gamma'\) be the tangent vector of \(\gamma\), and \(\mathbf t\) is also a unit vector. Therefore, there are two unit vectors \(\mathbf n_s\) and \(-\mathbf n_s\) that is perpendicular to \(\mathbf t\). By left-handed rules, we conventionally define \(\mathbf n_s\) be the signed unit normal of \(\gamma\), by rotating \(\mathbf t\) c.c.w by \(\pi/2\), in other word
Then, note that \(\mathbf t' = \gamma''\) is perpendicular to \(\mathbf t = \gamma'\). Thus there exists \(\kappa_s\) s.t. \(\gamma'' = \kappa_s \mathbf n_s\), define \(\kappa_s\) be the signed curvature of \(\gamma\), since we have that the curvature \(\kappa = \|\gamma''\| = \|\kappa_s \mathbf n_s\| = |\kappa_s|\).
Using this definition, if the curve is to the left of the tangent line, then \(\kappa_s > 0\), if to the right of the tangent line, then \(\kappa_s < 0\).
For a regular plane curve \(\gamma(t)\) (not necessarily unit-speed), we can define unit tangent vector \(\mathbf t\), signed unit normal \(\mathbf n_s\) and signed curvature \(\kappa_s\) at each point \(\gamma(t)\) via unit-speed parameterizations \(\tilde \gamma(s)\), where \(s(t)\) is the arc-length. Thus, we have that
Example: signed curvature on a circle
Let \(\gamma(t) = (\cos t, \sin t), = \gamma'(t) = (-\sin t, \cos t)\).
Source code
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0, np.pi, 0.01)
t0_idx = len(t) // 3
arc1 = np.array((np.cos(t), np.sin(t)))
tangent1 = np.array((-np.sin(t), np.cos(t)))
d2gamma1 = np.array((-np.cos(t), -np.sin(t)))
arc2 = np.array((np.cos(t), -np.sin(t)))
tangent2 = np.array((-np.sin(t), -np.cos(t)))
d2gamma2 = np.array((-np.cos(t), np.sin(t)))
def plot_curve(t0, gamma, dgamma, d2gamma, ax):
t0 = t[t0_idx] # 30 degree
p = np.array((gamma[0, t0_idx], gamma[1, t0_idx]))
tangent = dgamma[:, t0_idx]
normal = np.array(((0, -1), (1, 0))) @ tangent
kappa_s = (d2gamma[:, t0_idx] / normal)[0]
ax.plot(gamma[0], gamma[1])
ax.arrow(p[0], p[1], tangent[0] / 30, tangent[1]/30, head_width=.05, color="b")
ax.arrow(p[0], p[1], tangent[0], tangent[1], shape='full', head_width=.05, color="r")
ax.arrow(p[0], p[1], normal[0], normal[1], shape='full', head_width=.05, color="g")
ax.set_title(rf"$\kappa_s = {kappa_s}$");
plt.figure(figsize=(8, 4))
ax = plt.subplot(121); ax.set_aspect('equal'); ax.axis("off")
plot_curve(t, arc1, tangent1, d2gamma1, ax)
ax = plt.subplot(122); ax.set_aspect('equal'); ax.axis("off")
plot_curve(t, arc2, tangent2, d2gamma2, ax)
plt.savefig("../assets/plane_curve.jpg")
Claim 1
If \(\gamma\) is a unit-speed plane curve, then \(\mathbf n'_s = -\kappa_s \mathbf t\).
proof. Note that
Turning angle
Geometrically, the signed curvature can be interpreted as the rate at which the tangent vector rotates. If \(\gamma\) is a unit-speed curve, the direction of the tangent vector \(\gamma'(s)\) is measured by the angle \(\varphi(s)\) s.t.
Note that \(\cos, \sin\) are periodic functions for \(2\pi\), hence \(\varphi\) is not unique. But we can have some guarantee so that \(\varphi\) is always smooth.
The turning angle of \(\gamma\) determined by \(\varphi(s_0) = \varphi_0\) is a smooth function \(\varphi:(a,b)\rightarrow\mathbb R\) s.t.
Existence and Uniqueness
Theorem Let \(\gamma:(a, b) \rightarrow \mathbb R^2\) be a unit-speed plane curve, fix \(s_0\in(a, b), \varphi_0\in\mathbb R\) s.t.
Then, \(!\exists \varphi: (a, b)\rightarrow \mathbb R\) s.t. \(\varphi\) is smooth and \(\varphi(s_0) = \varphi_0\) and \(\forall s\in(a, b). \gamma'(s) = (\cos\varphi(s), \sin\varphi(s))\)
proof (informal). Let \(\gamma'(s) = (f(s), g(s))\). Geometrically speaking, since \(\gamma\) is unit-speed, \(f^2 + g^2 = 1\) so that the image of \(\gamma'(s)\) will be an arc of the unit-circle centered at \(0\). Then, fix some \(s_0\), we can have the angle \(\varphi_0\) defined on the circle. Then, by changing \(s\), \(\gamma'(s)\) is moving smoothly on the unit circle, hence its corresponding angle will also move smoothly.
proof (existence). Let \(\gamma'(s) = (f(s), g(s))\). Since \(\gamma\) is unit-speed, \(f^2 + g^2 = 1\). Define
Since \(f,g\) are both smooth, \(\varphi\) will also be smooth.
Therefore, we only need to show that \(f(s) = \cos\varphi(s), g(s) = \sin\varphi(s)\) for all \(s\).
First, we note that we have \(\varphi' = fg' - gf', f^2 + g^2 = 1\) and \(\frac{d}{dt}(f^2 + g^2) = 2ff'+2gg' = \frac{d}{dt}1 = 0\)
Define
Then
Note that we can then have
therefore, \(F' = 0 + 0 = 0\implies F\) is constant, where \(F(s_0) = f(s_0)\cos\varphi_0 + g(s_0)\sin\varphi_0 = f^2(s_0) + g^2(s_0) = 1\)
similarly, \(G' = 0\) and we can evaluate \(G(s_0) = \cos\varphi_0\sin\varphi_0 - \sin\varphi_0\cos\varphi_0 = 0\) Therefore, we have that
solves to be \(f = \cos\varphi, g = \sin\varphi\).
proof (uniqueness). Let \(\psi\) by another smooth function satisfying all conditions. Then \(\cos(\psi(s)) = \cos(\varphi(s)), \sin(\psi(s)) = \sin(\varphi(s))\), implying that \(\psi(s) - \varphi(s) = 2\pi n(s)\) where \(n(s): \mathbb R\rightarrow\mathbb N\). However, \(n\) need to be smooth since \(\varphi, \psi\) are both smooth, hence \(n\) must be a constant integer. However, since we define \(\varphi, \psi\) from the same \(\varphi_0\), we must have \(n =0\) and hence \(\varphi = \psi\).
Turning Angle and Signed Curvature
Geometrically, the signed curvature is the rate at which the tangent vector of the curve rotates.
Theorem Let \(\gamma(s)\) be a unit-speed plane curve, \(\varphi(s)\) be a turning angle, then \(\kappa_s = \frac{d\varphi}{ds}\).
proof. Note that \(\kappa_s\) is defined via \(\gamma'' = \kappa_s \mathbf n_s\). Then note,
Example 1
Find the signed curvature for \(\gamma(t) = (t,\cosh t)\). First, to find \(\varphi\),
Define \(\varphi\) be the angle between \(\gamma'\) and x-axis, then
Theorem 1
the total signed curvature of a closed plane curve is \(2\pi k\) for some integer \(k\).
proof. Let \(\gamma\) be unit-speed plane curve, since \(\gamma\) closed, take \(l\) be the arc-length so that \(\gamma(s+l) = \gamma(s)\) for any \(s\). The total signed curvature is defined as
Then, because \(\gamma\) is closed, hence periodic, we have that \(\gamma'(l) = \gamma'(0)\), which have
Therefore, \(\varphi(l) - \varphi(0) = 2\pi k\)
Plane Curve via signed curvature
Geometrically, the signed curvature determines where the curve rotates. Intuitively, if we have an initial direction and starting point, and we know the signed curvature for all time, then we can recover the curve by turning at each time.
Theorem Let \(k:(a,b)\rightarrow\mathbb R\) be any smooth function. Then, \(\exists \gamma:(a,b)\rightarrow\mathbb R^2\) s.t. \(\gamma\) is unit-speed and its signed curvature is \(k\). Furthermore, if another curve \(\tilde \gamma\) also has its signed curvature as \(k\), then \(\exists M\) be a direct isometry (the image only involves a translation and rotation) s.t. \(\tilde\gamma(s) = M(\gamma(s)), \forall s\in(a,b)\)
proof. Let \(s_0\in (a,b)\) and take
Note that \(\gamma'(s) = (\cos\varphi(s), \sin\varphi(s))\) is unit-speed and
Then, assume \(\tilde\gamma\) has a smooth turning angle \(\tilde\varphi\) and \(k(s) = \frac{d\tilde\varphi}{ds}\), then we have that
We can then substitute into \(\tilde\gamma\) and verify the isometry properties.
Example: k=0
Claim For any regular plane curve \(\gamma\), if \(\kappa_s = 0\), then \(\gamma\) is a an arc of a straight line.
proof. Since \(\kappa_s = 0\), then \(\kappa = 0\). By definition of curvature, \(\kappa = \|\gamma''\| = 0\implies \gamma''(t) = 0\). Therefore \(\gamma'(t) = c\) for some constant \(c\), and \(\gamma(t) = ct+b\) for some constant b.
Example: k = c > 0
Claim For any regular plane curve \(\gamma\), if \(\kappa\) is a positive constant, then \(\gamma\) is a circle, or an arc of a circle.
proof. Note that \(\kappa_s = \pm\kappa = \pm c\). However, since \(\kappa_s\) is smooth (\(\gamma'' = \kappa_s\mathbf n_s, \mathbf n_s, \gamma''\) are both smooth), by IVT, \(\kappa_s\) must take only one value. Then, all we need is to find a circle s.t. its signed curvature is \(c\), and then all curves will be isometry of such circle.
When \(\kappa_s = c\), \(\frac{d\varphi}{ds} = \kappa_s = c\) so that we take \(\varphi(s) = cs\). Then we have
Then, we can take
is a circle.
When \(\kappa_s = -c\), we can have similar results, only with a flip of the sign.