Let us first look at the smooth case. Let γ:I→R3 be an arc length parameterized smooth curve with tangent vector T:=γ′.
An adapted frame is then a smooth map σ:I→SO(3) such that σe1=T. We denote the second and the third column of σ by N and Bσ=(T,N,B).The fields N and B are normal vector fields. Clearly B=T×N.
Let us take the derivative of σ. Since the vectors T,N,B are normalized we find thatσ′=σU,whereU=(0κ1κ2−κ10−τ−κ2τ0).
If N is parallel along γ, i.e. the derivative has only a tangential component N′=κ1T, then so is B, and τ vanishes:U=(0κ1κ2−κ100−κ200).Such a frame is called a parallel frame. We have seen in the lecture that parallel frames always exist.
If σ=(T,N,B) is a parallel frame and α∈R, then we define a new frame σα=(T,Nα,Bα) with Nα=cosαN+sinαB,Bα=−sinαN+cosαB.This frame is parallel again.
The point now is that, up to Euclidean motion, γ is determined by U. We can just solve for σ and obtain T as its first column. The curve is then reconstructed by integrating T.
The term spinning refers then to the following procedure. We start with a curve γ and a parallel frame σ. This gives us U with κ1 and κ2. Now we define Uλ for λ∈R as followsUλ=(0κ1κ2−κ10−λ−κ2λ0).This determines a new curve γλ. This family of curves is called the associated family.
Our plan is to spin discrete space curves. So let γ=(γ0,…,γn) be a discrete space curve. Thinking of linear interpolation one finds the best place to locate an adapted frame is on the edges. Here it is clear what the tangent Ti shall beγ′i:=γi+1−γi=ℓiTi.
Since the tangent on each edge is constant, we can put just a constant frame on each edge, i.e. for each edge we get σi such that σie1=Ti. Only at vertices the frame field has to jump.
We define a discrete adapted frame as a collection of SO(3)-matrices σi such that σie1=Ti.
The jumps over the vertices are again given by SO(3)-matrices Ui, which we will call transport matrices. Quiet analogue to the smooth we haveσi=σi−1Ui.
As in the smooth world the transport matrices determine the adapted frame. If a initial value σ0 is given then σi is given byσi=σ0U1⋯Ui.
The corresponding curve is then reconstructed by integration of T=σe1. So we get for γ0∈R3 and σ0:γk+1=γ0+σ0(k∑i=0ℓiU1⋯Ui)e1.
Again we find special transport matrices, namely these which change the frame as minimal as possible, i.e. if Ti−1 and Ti are parallel then Ui=Id and else Ui rotates σi−1 around Ti−1×Ti. These transport matrices we will denote by parallel transport. They come directly with the geometry of the curve.
A frame with such transport matrices is called a discrete parallel frame. Each discrete curve admits a parallel frame.
Now let γ be a discrete space curve with a parallel frame σ=(T,N,B). Then this defines complex numbers q at the vertices in the following way: Consider the vertex γi+1. The plane Ni spanned by the vectors Ni,Bi can be considered as complex line with rotation given by 90-degree-rotation around Ti which we will denote by J, i.e. JX=Ti×X. The next tangent vector Ti+1 lies on the unit sphere with the point −Ti removed.
If we perform stereographic projection with respect to the north pole −Ti, then the tangent vector Ti+1 is mapped to Ni and hence defines a complex number qi+1=κ1Ni+κ2Bi=(κ1+κ2J)Ni. This can be interpreted as discrete complex curvature.
If the tangents are linearly dependent then q=0. If they are not they span a plane. We slice the sphere by this plane and find that the magnitude of q is given by|q|=tan(α2),where α is the angle between Ti and Ti+1.
In general frames can have torsion. While the curvature is located at the vertices, we define the torsion on the edges. Let σ be an arbitrary frame. Imagine the frames located at the start of the edges. We want to know how much it rotates around the edge from the beginning to the end. To get the rotation angle we use the parallel transport to pull the frame on the next edge back to the end of the current. I.e. we have σi and σi+1U−1i+1, both adapted to the i-th edge. They differ by a rotation around Ti. If α is the angle of the rotation, then the torsion τi is given by α=τiℓi.
To go further, we change to quaternionic frames in which the transports takes a much simpler form. Therefore we identify R3 with the imaginary quaternions, i.e.x1e1+x2e2+x3e3⟷x1i+x2j+x3k.With this identification a rotation around an axis given by a vector X with |X|=1 by an angle α takes the formP↦XαPX−1α,where Xα=cos(α/2)1+sin(α/2)X.
So we can encode the frame equations by quaternions by considering ϕi such thatTi=ϕiiϕ−1i,Ni=ϕijϕ−1i,Bi=ϕikϕ−1i.That is ϕ rotates the standard basis to the basis given by the frame σi. By the equations above ϕi is determined up to a non-zero scale factor. As before the frames ϕi are related by transports, i.e.ϕi=ϕi−1Vi.
The reconstruction formula for the corresponding curve takes a quite similar formγk+1=γ0+ϕ0(k∑i=0ℓi(V1⋯Vi)i(V1⋯Vi)−1)ϕ−10.
Once we know the q the parallel transport takes an amazingly simple for in the quaternionic setting. It is given by Vi=1+iqj=1+qk=1−Im(q)j+Re(q)k.
This is due to the fact that −Im(q)j+Re(q)k are the coordinates (wrt. ϕi−1) of the rotation axis prescribed by parallel transport and |q|=tan(α/2), where α is the rotation angle.
The rotation around the tangent takes the simple form Tαi=cos(αℓi)1+sin(αℓi)i. Hence we can spin the curve in the following way:
- Take a parallel frame and calculate the corresponding q’s.
- Define for λ∈R a new parallel transport by Vλi=Tλi−1Vi.
- Reconstruct the curve corresponding the Vαi.
Homework (due date 27 June): Your task is to implement the spinning procedure, i.e. write a plugin the constructs for a given λ∈R the curve corresponding to the transports Vλi as define above and adds it to the scene. The initial values should be chosen suitably.