1

Someone has asked a similar question before but the answer was not that useful.

I want to make a sweeping surface with PGA, i.e. to transport a curve along a parametric curve.

With linear algebra one computes the tangent, Normal and Binormal of a point in the path curve, then transforms the swept curve from 2D into 3D by applying the induced transformation (i.e. multiplying the 4x4 homogeneous matrix made by the 3 axes and the position vector).

Or alternatively by multiplying the x and y coordinates by the normal and binormal and adding the point.

I want to do the same with PGA, i.e. I want to use the frenet trihedron to move my curve from 2D to 3D.

As requested in the comments. This is how we would achieve this with lienar algebra.

Given 2 parametric curves $P(t), C(t)$ the first defined in 3D the second in 2D/ the xy plane embedded in 3D and the frenet trihedron operator $F(f, x)->(T,N,B)_x$ We can create a parametric surface as:

compute the frenet trihedron along the first curve $(T_u, N_u, B_u) = F(P, u)$

Then a level curve of the parametric surface is, if $(x, y) = C(v)$ then $S(u_t, v) = xN_{u_t} + y B_{u_t} + P(u_t)$

Or alternatively:

$S(u_t, v) = M \cdot [x, y, 0, 1]$

Where $M$ is a $4\times4$ matrix where the first column is $[T,0]$ the second $[N,0]$ the third $[B,0]$ and the last is $[P(u_t), 1]$.

Makogan
  • 3,735
  • 1
    Maybe a stupid question, but what is PGA? – student91 Feb 15 '23 at 10:05
  • projective geometric algebra – Makogan Feb 15 '23 at 10:32
  • I don't understand how the linked question has any relevance. It's also not clear to me what you want. What data are you starting with, and what data do you want to end up with? Can you give an example of how this is done with standard linear algebra? Can you better specify this "induced transformation"? – Nicholas Todoroff Feb 15 '23 at 16:51
  • @NicholasTodoroff Added a description on how to define a sweeping surface in lin alg. – Makogan Feb 15 '23 at 19:57
  • What is $x$ in $F(f, x)$? Is it a point on the curve $f$? What is $u_t$, do you just mean $P(t)$? Should $P(u_t)$ be $P(t)$? I think I do get the gist of it though. So what do you want to do with PGA here? Represent $M$? – Nicholas Todoroff Feb 15 '23 at 21:07
  • @NicholasTodoroff as mentioned in the question immediately before intoruding the symbol, it;s the frenet trihedron/frenet frame of the curve f at parameter x – Makogan Feb 15 '23 at 21:15
  • It does not say that, and you haven't answered my other questions. – Nicholas Todoroff Feb 15 '23 at 21:52
  • @NicholasTodoroff $u_t$ is a fixed value of $u$ , in general aparametric surface is described as a function from 2D to 3D i.e. $S(u,v)$ if we want a level curve of the surface we must fix one of the two parameters. $u_t$ is some value of u that is hold constant while we allow $v$ to vary.

    And yes, basically getting $M$ but as a motor.

    – Makogan Feb 15 '23 at 21:55

1 Answers1

2

$ \newcommand\plane\mathbf \newcommand\lcontr{\mathbin\rfloor} \newcommand\rcontr{\mathbin\lfloor} $Let our basis of orthonormal planes be $\plane e_1, \plane e_2, \plane e_3, \infty$ with $\infty$ the plane at infinity. A free vector $V$, representing a pure displacement, is an element of the form $$ V = (v_1\plane e_2\plane e_3 + v_2\plane e_3\plane e_1 + v_3\plane e_1\plane e_2)\infty. $$ A choice of origin $\oslash = \plane e_1\plane e_2\plane e_3$ recovers the unique plane passing through $\oslash$ orthogonal to $V$ $$ \plane V = \oslash^{-1}\rcontr\oslash\vee V = v_1\plane e_1 + v_2\plane e_2 + v_3\plane e_3. $$ We take $T, N, B$ to be such free vectors with orthogonal planes $\plane T, \plane N, \plane B$. We take path functions $P, C$ as returning points (i.e. trivectors); if $$ P_\infty(u) = \bigl(p_x(u)\plane e_2\plane e_3 + p_y(u)\plane e_3\plane e_1 + p_z(u)\plane e_1\plane e_2\bigr)\infty $$ is the free position vector from $\oslash$ to $P(u)$ then $P(u) = \oslash + P_\infty(u)$.

The transformation represented by $M$ performs a rotation taking $\plane e_1\infty$ to $N$ and $\plane e_2\infty$ to $B$. We can write such a rotor $R$ as $$ R = \frac{(\plane N - \plane e_1)(\plane B - \plane e_2')}{|\plane N - \plane e_1||\plane B - \plane e_2'|},\quad \plane e_2' = \frac{-(\plane N - \plane e_1)\plane e_2(\plane N - \plane e_1)}{(\plane N - \plane e_1)^2} = \plane e_2 - 2\frac{\plane N\cdot\plane e_2}{(\plane N - \plane e_1)^2}(\plane N - \plane e_1). $$ Note that this particular expression assumes $N$ and $B$ being unit vectors. This is derived by reflecting $\plane e_1$ to $\plane N$, applying this to $\plane e_2$ to get $\plane e_2'$, and then reflecting $\plane e_2'$ to $\plane B$. As constructed, $R$ is a rotation about the origin $\oslash$.

$M$ then performs a translation taking $\oslash$ to $P(u)$; the corresponding displacement is $P_\infty(u)$ so the corresponding translator $D$ is $$\begin{aligned} D &= \exp\left[\frac12\oslash^{-1}\times P_\infty(u)\right] = 1 + \frac12\oslash^{-1}\times P_u(\infty) \\ &= 1 + \frac12\plane P_\infty(u) = 1 + \frac12\bigl(p_x(u)\plane e_1 + p_y(u)\plane e_2 + p_z(u)\plane e_3\bigr)\infty. \end{aligned}$$ $\plane P_\infty(u)$ can be interpreted as the unique free plane orthogonal to $P_\infty(u)$.

All together, our motor representation of $M$ is $$ M(u) = RD = \frac{(\plane N - \plane e_1)(\plane B - \plane e_2')(2 + \plane P_\infty(u))}{2|\plane N - \plane e_1||\plane B - \plane e_2'|},\quad \plane e_2' = \frac{-(\plane N - \plane e_1)\plane e_2(\plane N - \plane e_1)}{(\plane N - \plane e_1)^2}. $$ It is applied to an object $X$ via $$ X \mapsto \widetilde MXM $$ where $\widetilde M$ is the reverse of $M$. Thus if $S(u, v)$ and $C(v) = \oslash + (x(v)\plane e_2\plane e_3 + y(v)\plane e_3\plane e_1)\infty$ are point-valued then $$ S(u, v) = \widetilde M(u)C(v)M(u). $$