This presentation has animations that need to know the fragment index in the slide. Slides.com does not forward this by default. You can easily fix this by pasting the following in your browser console before watching:
Reveal.on('fragmentshown', () => [...document.querySelectorAll('iframe')].filter(x=>x.src)
.forEach( x => x.contentWindow.postMessage({action:'fragment',data:Reveal.getIndices()},'*')));
Reveal.on('fragmenthidden', () => [...document.querySelectorAll('iframe')].filter(x=>x.src)
.forEach( x => x.contentWindow.postMessage({action:'fragment',data:Reveal.getIndices()},'*')));
CGI2025 - ENGAGE WORKSHOP
Coordinate Free Circular Splines
Steven De Keninck - University of Amsterdam
Coordinate Free Circular Splines
Steven De Keninck \(\cdot\) University of Amsterdam
无需坐标的圆形样条
请别担心英文,所有内容都在动画和公式中。
Coordinate Free Circular Splines
a circular spline through \(n\) points is a smooth spline that
consists entirely out of circle and line segments.
Classic solution is riddled with coefficients, trigonometry, explicit
construction of circle centers, arc orientations, and circle coordinates.
Coordinate Free Circular Splines
Classic solution is riddled with coefficients, trigonometry, explicit
construction of circle centers, arc orientations, and circle coordinates.
It gets even harder in 3D.
desmos example by Fadaaszhi#1725
Coordinate Free Circular Splines
Let's do this with Geometric Algebra.
There is no blade representation for circular arcs, not even in CGA.
However, the orbit of every simple PGA rotor (pure rotation or translation)
on a point is exactly such a circular arc or line segment.
Coordinate Free Circular Splines
So let us find the rotors \(R_i\) that rotate points \(p_i\) onto \(p_{i+1}\)
Our spline is then the set of all points of the form \( R_i^\alpha p_i \widetilde{R_i^\alpha}, \, 0 \leq \alpha \leq 1\)
We begin by finding the circle centers.
Coordinate Free Circular Splines
We begin by finding the circle centers.
For our circles to be tangent, \(R_1\) must be on \(\ell_1\), a line with \(R_0\) and \(p_1\)
For our segments to connect, \(R_1\) must be on \(\ell_2\), the line between \(p_1\) and \(p_2\)
We could now meet \(\ell_1\) and \(\ell_2\), find angle, sense, and exponentiate.
\(c = \overline{\ell_1 \wedge \ell_2}\) \(\alpha = \cos^{-1}(\overline{c \vee p_1} \cdot \overline{c \vee p_2})\) \(R_1 = \pm e^{-{\alpha \over 2}c}\)
\(R_1 = \overline{\ell_2 \ell_1} \)
\(R_1 = \overline{\ell_2(R_0 \vee p_1) } \)
\(R_1 = \overline{ ((p_1 + p_2)\cdot(p_1\vee p_2))(R_0 \vee p_1)} \)
\(R_i = \overline{((p_i + p_{i+1})\cdot(p_i\vee p_{i+1}))(\log R_{i-1} \vee \tilde p_i)} \)
⭐ 好多了!
Coordinate Free Circular Splines
\(R_i = \overline{((p_i + p_{i+1})\cdot(p_i\vee p_{i+1}))(\log R_{i-1} \vee \tilde p_i)} \)
But what about 3D ???
Coordinate Free Circular Splines
\(R_i = \overline{((p_i + p_{i+1})\cdot(p_i\vee p_{i+1}))(\log R_{i-1} \vee \tilde p_i)} \)
But what about 3D ???
\(\underbrace{\phantom{(}\underbrace{\phantom{(p_i + p_{i+1})}}_{\text{point}}\phantom{\cdot}\underbrace{\phantom{(p_i\vee p_{i+1})}}_{\text{line}}\phantom{)}}_{\text{2D line}}\underbrace{\phantom{(}\underbrace{\phantom{\log R_{i-1} }}_{\text{point}}\phantom{\vee} \underbrace{\phantom{p_i}}_{\text{point}}\phantom{)}}_{\text{2D line}}\)
\(\underbrace{\phantom{(}\underbrace{\phantom{(p_i + p_{i+1})}}_{\text{point}}\phantom{\cdot}\underbrace{\phantom{(p_i\vee p_{i+1})}}_{\text{line}}\phantom{)}}_{\text{3D plane}}\underbrace{\phantom{(}\underbrace{\phantom{\log R_{i-1} }}_{\text{line}}\phantom{\vee} \underbrace{\phantom{p_i}}_{\text{point}}\phantom{)}}_{\text{3D plane}}\)
Coordinate Free Circular Splines
\(R_i = \overline{((p_i + p_{i+1})\cdot(p_i\vee p_{i+1}))(\log R_{i-1} \vee \tilde p_i)} \)
Thanks!
to understand rotations, you must first understand reflections.
要理解旋转,首先必须理解反射。