package Ġglm _. g tx Ċ Ċ import Ġglm _. glm . pow 2 Ċ import Ġglm _. glm . pow 3 Ċ import Ġglm _. vec 1 . Vec 1 Ċ import Ġglm _. vec 2 . Vec 2 Ċ import Ġglm _. vec 3 . Vec 3 Ċ import Ġglm _. vec 4 . Vec 4 Ċ Ċ interface Ġg xt Spline Ġ{ ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( v 1 : ĠVec 1 , Ġv 2 : ĠVec 1 , Ġv 3 : ĠVec 1 , Ġv 4 : ĠVec 1 , Ġs : ĠFloat ) Ġ= Ġcat m ull Rom ( Vec 1 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 1 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ- s 3 Ġ+ Ġ 2 f Ġ* Ġs 2 Ġ- Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ 3 f Ġ* Ġs 3 Ġ- Ġ 5 f Ġ* Ġs 2 Ġ+ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġ- 3 f Ġ* Ġs 3 Ġ+ Ġ 4 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres (( f 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġv 3 . x Ġ+ Ġf 4 Ġ* Ġv 4 . x ) Ġ/ Ġ 2 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( v 1 : ĠVec 2 , Ġv 2 : ĠVec 2 , Ġv 3 : ĠVec 2 , Ġv 4 : ĠVec 2 , Ġs : ĠFloat ): ĠVec 2 Ġ= Ġcat m ull Rom ( Vec 2 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 2 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ- s 3 Ġ+ Ġ 2 f Ġ* Ġs 2 Ġ- Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ 3 f Ġ* Ġs 3 Ġ- Ġ 5 f Ġ* Ġs 2 Ġ+ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġ- 3 f Ġ* Ġs 3 Ġ+ Ġ 4 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġv 3 . x Ġ+ Ġf 4 Ġ* Ġv 4 . x ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġv 3 . y Ġ+ Ġf 4 Ġ* Ġv 4 . y ) Ġ/ Ġ 2 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( v 1 : ĠVec 3 , Ġv 2 : ĠVec 3 , Ġv 3 : ĠVec 3 , Ġv 4 : ĠVec 3 , Ġs : ĠFloat ): ĠVec 3 Ġ= Ġcat m ull Rom ( Vec 3 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 3 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ- s 3 Ġ+ Ġ 2 f Ġ* Ġs 2 Ġ- Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ 3 f Ġ* Ġs 3 Ġ- Ġ 5 f Ġ* Ġs 2 Ġ+ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġ- 3 f Ġ* Ġs 3 Ġ+ Ġ 4 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġv 3 . x Ġ+ Ġf 4 Ġ* Ġv 4 . x ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġv 3 . y Ġ+ Ġf 4 Ġ* Ġv 4 . y ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . z Ġ+ Ġf 2 Ġ* Ġv 2 . z Ġ+ Ġf 3 Ġ* Ġv 3 . z Ġ+ Ġf 4 Ġ* Ġv 4 . z ) Ġ/ Ġ 2 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( v 1 : ĠVec 4 , Ġv 2 : ĠVec 4 , Ġv 3 : ĠVec 4 , Ġv 4 : ĠVec 4 , Ġs : ĠFloat ): ĠVec 4 Ġ= Ġcat m ull Rom ( Vec 4 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcat m ull Ġrom Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcat m ull Rom ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 4 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ- s 3 Ġ+ Ġ 2 f Ġ* Ġs 2 Ġ- Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ 3 f Ġ* Ġs 3 Ġ- Ġ 5 f Ġ* Ġs 2 Ġ+ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġ- 3 f Ġ* Ġs 3 Ġ+ Ġ 4 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġv 3 . x Ġ+ Ġf 4 Ġ* Ġv 4 . x ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġv 3 . y Ġ+ Ġf 4 Ġ* Ġv 4 . y ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . z Ġ+ Ġf 2 Ġ* Ġv 2 . z Ġ+ Ġf 3 Ġ* Ġv 3 . z Ġ+ Ġf 4 Ġ* Ġv 4 . z ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( f 1 Ġ* Ġv 1 . w Ġ+ Ġf 2 Ġ* Ġv 2 . w Ġ+ Ġf 3 Ġ* Ġv 3 . w Ġ+ Ġf 4 Ġ* Ġv 4 . w ) Ġ/ Ġ 2 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( v 1 : ĠVec 1 , Ġt 1 : ĠVec 1 , Ġv 2 : ĠVec 1 , Ġt 2 : ĠVec 1 , Ġs : ĠFloat ): ĠVec 1 Ġ= Ġh erm ite ( Vec 1 (), Ġv 1 , Ġt 1 , Ġv 2 , Ġt 2 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( res : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 1 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 2 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 1 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ 2 f Ġ* Ġs 3 Ġ- Ġ 3 f Ġ* Ġs 2 Ġ+ Ġ 1 f ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ- 2 f Ġ* Ġs 3 Ġ+ Ġ 3 f Ġ* Ġs 2 ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġs 3 Ġ- Ġ 2 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( f 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġt 1 . x Ġ+ Ġf 4 Ġ* Ġt 2 . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( v 1 : ĠVec 2 , Ġt 1 : ĠVec 2 , Ġv 2 : ĠVec 2 , Ġt 2 : ĠVec 2 , Ġs : ĠFloat ): ĠVec 2 Ġ= Ġh erm ite ( Vec 2 (), Ġv 1 , Ġt 1 , Ġv 2 , Ġt 2 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( res : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 1 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 2 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 2 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ 2 f Ġ* Ġs 3 Ġ- Ġ 3 f Ġ* Ġs 2 Ġ+ Ġ 1 f ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ- 2 f Ġ* Ġs 3 Ġ+ Ġ 3 f Ġ* Ġs 2 ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġs 3 Ġ- Ġ 2 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġt 1 . x Ġ+ Ġf 4 Ġ* Ġt 2 . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġt 1 . y Ġ+ Ġf 4 Ġ* Ġt 2 . y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( v 1 : ĠVec 3 , Ġt 1 : ĠVec 3 , Ġv 2 : ĠVec 3 , Ġt 2 : ĠVec 3 , Ġs : ĠFloat ): ĠVec 3 Ġ= Ġh erm ite ( Vec 3 (), Ġv 1 , Ġt 1 , Ġv 2 , Ġt 2 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( res : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 1 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 2 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 3 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ 2 f Ġ* Ġs 3 Ġ- Ġ 3 f Ġ* Ġs 2 Ġ+ Ġ 1 f ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ- 2 f Ġ* Ġs 3 Ġ+ Ġ 3 f Ġ* Ġs 2 ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġs 3 Ġ- Ġ 2 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġt 1 . x Ġ+ Ġf 4 Ġ* Ġt 2 . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġt 1 . y Ġ+ Ġf 4 Ġ* Ġt 2 . y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . z Ġ+ Ġf 2 Ġ* Ġv 2 . z Ġ+ Ġf 3 Ġ* Ġt 1 . z Ġ+ Ġf 4 Ġ* Ġt 2 . z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( v 1 : ĠVec 4 , Ġt 1 : ĠVec 4 , Ġv 2 : ĠVec 4 , Ġt 2 : ĠVec 4 , Ġs : ĠFloat ): ĠVec 4 Ġ= Ġh erm ite ( Vec 4 (), Ġv 1 , Ġt 1 , Ġv 2 , Ġt 2 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġh erm ite Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġh erm ite ( res : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 1 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt 2 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 4 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġpow 2 ( s ) ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġpow 3 ( s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġ 2 f Ġ* Ġs 3 Ġ- Ġ 3 f Ġ* Ġs 2 Ġ+ Ġ 1 f ĊĠĠĠĠĠĠĠ Ġval Ġf 2 Ġ= Ġ- 2 f Ġ* Ġs 3 Ġ+ Ġ 3 f Ġ* Ġs 2 ĊĠĠĠĠĠĠĠ Ġval Ġf 3 Ġ= Ġs 3 Ġ- Ġ 2 f Ġ* Ġs 2 Ġ+ Ġs ĊĠĠĠĠĠĠĠ Ġval Ġf 4 Ġ= Ġs 3 Ġ- Ġs 2 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . x Ġ+ Ġf 2 Ġ* Ġv 2 . x Ġ+ Ġf 3 Ġ* Ġt 1 . x Ġ+ Ġf 4 Ġ* Ġt 2 . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . y Ġ+ Ġf 2 Ġ* Ġv 2 . y Ġ+ Ġf 3 Ġ* Ġt 1 . y Ġ+ Ġf 4 Ġ* Ġt 2 . y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . z Ġ+ Ġf 2 Ġ* Ġv 2 . z Ġ+ Ġf 3 Ġ* Ġt 1 . z Ġ+ Ġf 4 Ġ* Ġt 2 . z , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf 1 Ġ* Ġv 1 . w Ġ+ Ġf 2 Ġ* Ġv 2 . w Ġ+ Ġf 3 Ġ* Ġt 1 . w Ġ+ Ġf 4 Ġ* Ġt 2 . w ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( v 1 : ĠVec 1 , Ġv 2 : ĠVec 1 , Ġv 3 : ĠVec 1 , Ġv 4 : ĠVec 1 , Ġs : ĠFloat ): ĠVec 1 Ġ= Ġcubic ( Vec 1 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( res : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 1 Ġ= Ġres ((( v 1 . x Ġ* Ġs Ġ+ Ġv 2 . x ) Ġ* Ġs Ġ+ Ġv 3 . x ) Ġ* Ġs Ġ+ Ġv 4 . x ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( v 1 : ĠVec 2 , Ġv 2 : ĠVec 2 , Ġv 3 : ĠVec 2 , Ġv 4 : ĠVec 2 , Ġs : ĠFloat ): ĠVec 2 Ġ= Ġcubic ( Vec 2 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( res : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 2 Ġ= Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . x Ġ* Ġs Ġ+ Ġv 2 . x ) Ġ* Ġs Ġ+ Ġv 3 . x ) Ġ* Ġs Ġ+ Ġv 4 . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . y Ġ* Ġs Ġ+ Ġv 2 . y ) Ġ* Ġs Ġ+ Ġv 3 . y ) Ġ* Ġs Ġ+ Ġv 4 . y ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( v 1 : ĠVec 3 , Ġv 2 : ĠVec 3 , Ġv 3 : ĠVec 3 , Ġv 4 : ĠVec 3 , Ġs : ĠFloat ): ĠVec 3 Ġ= Ġcubic ( Vec 3 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( res : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 3 Ġ= Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . x Ġ* Ġs Ġ+ Ġv 2 . x ) Ġ* Ġs Ġ+ Ġv 3 . x ) Ġ* Ġs Ġ+ Ġv 4 . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . y Ġ* Ġs Ġ+ Ġv 2 . y ) Ġ* Ġs Ġ+ Ġv 3 . y ) Ġ* Ġs Ġ+ Ġv 4 . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . z Ġ* Ġs Ġ+ Ġv 2 . z ) Ġ* Ġs Ġ+ Ġv 3 . z ) Ġ* Ġs Ġ+ Ġv 4 . z ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( v 1 : ĠVec 4 , Ġv 2 : ĠVec 4 , Ġv 3 : ĠVec 4 , Ġv 4 : ĠVec 4 , Ġs : ĠFloat ): ĠVec 4 Ġ= Ġcubic ( Vec 4 (), Ġv 1 , Ġv 2 , Ġv 3 , Ġv 4 , Ġs ) ĊĊĠĠĠ Ġ/** ĠReturn Ġa Ġpoint Ġfrom Ġa Ġcubic Ġcurve . ĊĠĠĠĠ Ġ* Ġ Ġ@ see Ġg tx _ spline Ġextension . Ġ*/ ĊĠĠĠ Ġfun Ġcubic ( res : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 3 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 4 : ĠVec 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs : ĠFloat ): ĠVec 4 Ġ= Ġres ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . x Ġ* Ġs Ġ+ Ġv 2 . x ) Ġ* Ġs Ġ+ Ġv 3 . x ) Ġ* Ġs Ġ+ Ġv 4 . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . y Ġ* Ġs Ġ+ Ġv 2 . y ) Ġ* Ġs Ġ+ Ġv 3 . y ) Ġ* Ġs Ġ+ Ġv 4 . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . z Ġ* Ġs Ġ+ Ġv 2 . z ) Ġ* Ġs Ġ+ Ġv 3 . z ) Ġ* Ġs Ġ+ Ġv 4 . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(( v 1 . w Ġ* Ġs Ġ+ Ġv 2 . w ) Ġ* Ġs Ġ+ Ġv 3 . w ) Ġ* Ġs Ġ+ Ġv 4 . w ) Ċ }