MATH6110P: Computer Aided Geometric Design (Autumn-Winter 2021-2022)
Instructors: Renjie Chen
Webpage: http://staff.ustc.edu.cn/~renjiec/Courses/CAGD_2021S1/default.htm
- Visual Studio 2019
- CMake >= 3.14
git clone https://github.com/Chaphlagical/CAGD --recursive
Configure
, Generate
, and run Homework
Frenet Frame $$ \begin{aligned} e_1(t)&=\frac{c'(t)}{|c'(t)|}\ e_2(t)&=c''(t)-(c''(t),e_1)\cdot e_1\notag \end{aligned} $$ Curvature $$ \kappa(t)=\frac{|c'(t)\times c''(t)|}{|c'(t)|^3}\notag $$ Involute $$ \eta(t)=c(t)+\frac{1}{\kappa(t)}e_2(t)\notag $$ Curvature Circle $$ c(t)=\eta(t)+(\cos t/\kappa, \sin t/\kappa) $$
-
Interpolation:
$\pmb b_{3i}=\pmb k_i$ -
$C^1$ Continuity: $$ \dfrac{\pmb b_n^--\pmb b_{n-1}^-}{t_j-t_{j-1}}=\dfrac{\pmb b_1^+-\pmb b_0^+}{t_{j+1}-t_j} $$ -
$C^2$ Continuity: $$ \dfrac{\pmb b_n^--2\pmb b_{n-1}^-+\pmb b_{n-2}^-}{(t_j-t_{j-1})^2}=\dfrac{\pmb b_2^+-2\pmb b_1^++\pmb b_0^+}{(t_{j+1}-t_j)^2} $$ -
End Condition:
- Natural
- Bessel
- Close
-
Parameterization
- Uniform
- Chordal
- Centripetal
-
Given
-
$n+1$ control points:$\pmb k_0,\cdots,\pmb k_n$ , - Knot sequence
$s_0,\cdots,s_n$
-
-
B spline basis: $$ \begin{aligned} N_i^1(t)&=\begin{cases} 1,&t_i\leq t<t_{i+1}\\ 0,&\mathrm{otherwise} \end{cases}\\ N_{i,k}(t)&=\dfrac{t-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(t)+\dfrac{t_{i+k}-t}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t)\notag \end{aligned} $$
-
B spline: $$ \pmb x(t)=\sum_{i=0}^nN_{i,k}(t)\cdot \pmb d_i $$
-
Support:
-
$C^2$ continuity points - Line points
- Sharp points
-
with: $$ R_{i,n}(t)=\frac{B_{n,i}(t)w_i}{\sum_{j=0}^nB_{n,j}(t)w_j} $$
-
Update old vertices $$ O_{new}=\frac{1}{8}(C+D)+\frac{3}{8}(A+B) $$
-
Update new vertices $$ \tilde O=(1-nu)O+u\sum_{i=1}^nv_i $$
- n: vertex degree
- u:
$3/16$ if$n=3$ ,$3/(8n)$ otherwise