\(\newcommand{\footnotename}{footnote}\)
\(\def \LWRfootnote {1}\)
\(\newcommand {\footnote }[2][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\newcommand {\footnotemark }[1][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\newcommand \ensuremath [1]{#1}\)
\(\newcommand {\LWRframebox }[2][]{\fbox {#2}} \newcommand {\framebox }[1][]{\LWRframebox } \)
\(\newcommand {\setlength }[2]{}\)
\(\newcommand {\addtolength }[2]{}\)
\(\newcommand {\setcounter }[2]{}\)
\(\newcommand {\addtocounter }[2]{}\)
\(\newcommand {\cline }[1]{}\)
\(\newcommand {\directlua }[1]{\text {(directlua)}}\)
\(\newcommand {\luatexdirectlua }[1]{\text {(directlua)}}\)
\(\newcommand {\protect }{}\)
\(\def \LWRabsorbnumber #1 {}\)
\(\def \LWRabsorbquotenumber "#1 {}\)
\(\def \mathchar {\ifnextchar "\LWRabsorbquotenumber \LWRabsorbnumber }\)
\(\def \mathcode #1={\mathchar }\)
\(\let \delcode \mathcode \)
\(\let \delimiter \mathchar \)
\(\let \LWRref \ref \)
\(\renewcommand {\ref }{\ifstar \LWRref \LWRref }\)
\(\newcommand {\intertext }[1]{\text {#1}\notag \\}\)
\(\newcommand {\mathllap }[2][]{{#1#2}}\)
\(\newcommand {\mathrlap }[2][]{{#1#2}}\)
\(\newcommand {\mathclap }[2][]{{#1#2}}\)
\(\newcommand {\mathmbox }[1]{#1}\)
\(\newcommand {\clap }[1]{#1}\)
\(\newcommand {\LWRmathmakebox }[2][]{#2}\)
\(\newcommand {\mathmakebox }[1][]{\LWRmathmakebox }\)
\(\newcommand {\cramped }[2][]{{#1#2}}\)
\(\newcommand {\crampedllap }[2][]{{#1#2}}\)
\(\newcommand {\crampedrlap }[2][]{{#1#2}}\)
\(\newcommand {\crampedclap }[2][]{{#1#2}}\)
\(\newenvironment {crampedsubarray}[1]{}{}\)
\(\newcommand {\crampedsubstack }{}\)
\(\newcommand {\smashoperator }[2][]{#2\limits }\)
\(\newcommand {\adjustlimits }{}\)
\(\newcommand {\SwapAboveDisplaySkip }{}\)
\(\require {extpfeil}\)
\(\Newextarrow \xleftrightarrow {10,10}{0x2194}\)
\(\Newextarrow \xLeftarrow {10,10}{0x21d0}\)
\(\Newextarrow \xhookleftarrow {10,10}{0x21a9}\)
\(\Newextarrow \xmapsto {10,10}{0x21a6}\)
\(\Newextarrow \xRightarrow {10,10}{0x21d2}\)
\(\Newextarrow \xLeftrightarrow {10,10}{0x21d4}\)
\(\Newextarrow \xhookrightarrow {10,10}{0x21aa}\)
\(\Newextarrow \xrightharpoondown {10,10}{0x21c1}\)
\(\Newextarrow \xleftharpoondown {10,10}{0x21bd}\)
\(\Newextarrow \xrightleftharpoons {10,10}{0x21cc}\)
\(\Newextarrow \xrightharpoonup {10,10}{0x21c0}\)
\(\Newextarrow \xleftharpoonup {10,10}{0x21bc}\)
\(\Newextarrow \xleftrightharpoons {10,10}{0x21cb}\)
\(\newcommand {\LWRdounderbracket }[3]{\underset {#3}{\underline {#1}}}\)
\(\newcommand {\LWRunderbracket }[2][]{\LWRdounderbracket {#2}}\)
\(\newcommand {\underbracket }[1][]{\LWRunderbracket }\)
\(\newcommand {\LWRdooverbracket }[3]{\overset {#3}{\overline {#1}}}\)
\(\newcommand {\LWRoverbracket }[2][]{\LWRdooverbracket {#2}}\)
\(\newcommand {\overbracket }[1][]{\LWRoverbracket }\)
\(\newcommand {\LATEXunderbrace }[1]{\underbrace {#1}}\)
\(\newcommand {\LATEXoverbrace }[1]{\overbrace {#1}}\)
\(\newenvironment {matrix*}[1][]{\begin {matrix}}{\end {matrix}}\)
\(\newenvironment {pmatrix*}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bmatrix*}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bmatrix*}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vmatrix*}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vmatrix*}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newenvironment {smallmatrix*}[1][]{\begin {matrix}}{\end {matrix}}\)
\(\newenvironment {psmallmatrix*}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bsmallmatrix*}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bsmallmatrix*}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vsmallmatrix*}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vsmallmatrix*}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newenvironment {psmallmatrix}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bsmallmatrix}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bsmallmatrix}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vsmallmatrix}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vsmallmatrix}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newcommand {\LWRmultlined }[1][]{\begin {multline*}}\)
\(\newenvironment {multlined}[1][]{\LWRmultlined }{\end {multline*}}\)
\(\let \LWRorigshoveleft \shoveleft \)
\(\renewcommand {\shoveleft }[1][]{\LWRorigshoveleft }\)
\(\let \LWRorigshoveright \shoveright \)
\(\renewcommand {\shoveright }[1][]{\LWRorigshoveright }\)
\(\newenvironment {dcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {dcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {rcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {rcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {drcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {drcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {cases*}{\begin {cases}}{\end {cases}}\)
\(\newcommand {\MoveEqLeft }[1][]{}\)
\(\def \LWRAboxed #1!|!{\fbox {\(#1\)}&\fbox {\(#2\)}} \newcommand {\Aboxed }[1]{\LWRAboxed #1&&!|!} \)
\( \newcommand {\LWRABLines }[1][\Updownarrow ]{#1 \notag \\}\newcommand {\ArrowBetweenLines }{\ifstar \LWRABLines \LWRABLines } \)
\(\newcommand {\shortintertext }[1]{\text {#1}\notag \\}\)
\(\newcommand {\vdotswithin }[1]{\hspace {.5em}\vdots }\)
\(\newcommand {\LWRshortvdotswithinstar }[1]{\vdots \hspace {.5em} & \\}\)
\(\newcommand {\LWRshortvdotswithinnostar }[1]{& \hspace {.5em}\vdots \\}\)
\(\newcommand {\shortvdotswithin }{\ifstar \LWRshortvdotswithinstar \LWRshortvdotswithinnostar }\)
\(\newcommand {\MTFlushSpaceAbove }{}\)
\(\newcommand {\MTFlushSpaceBelow }{\\}\)
\(\newcommand \lparen {(}\)
\(\newcommand \rparen {)}\)
\(\newcommand {\ordinarycolon }{:}\)
\(\newcommand {\vcentcolon }{\mathrel {\mathop \ordinarycolon }}\)
\(\newcommand \dblcolon {\vcentcolon \vcentcolon }\)
\(\newcommand \coloneqq {\vcentcolon =}\)
\(\newcommand \Coloneqq {\dblcolon =}\)
\(\newcommand \coloneq {\vcentcolon {-}}\)
\(\newcommand \Coloneq {\dblcolon {-}}\)
\(\newcommand \eqqcolon {=\vcentcolon }\)
\(\newcommand \Eqqcolon {=\dblcolon }\)
\(\newcommand \eqcolon {\mathrel {-}\vcentcolon }\)
\(\newcommand \Eqcolon {\mathrel {-}\dblcolon }\)
\(\newcommand \colonapprox {\vcentcolon \approx }\)
\(\newcommand \Colonapprox {\dblcolon \approx }\)
\(\newcommand \colonsim {\vcentcolon \sim }\)
\(\newcommand \Colonsim {\dblcolon \sim }\)
\(\newcommand {\nuparrow }{\mathrel {\cancel {\uparrow }}}\)
\(\newcommand {\ndownarrow }{\mathrel {\cancel {\downarrow }}}\)
\(\newcommand {\bigtimes }{\mathop {\Large \times }\limits }\)
\(\newcommand {\prescript }[3]{{}^{#1}_{#2}#3}\)
\(\newenvironment {lgathered}{\begin {gathered}}{\end {gathered}}\)
\(\newenvironment {rgathered}{\begin {gathered}}{\end {gathered}}\)
\(\newcommand {\splitfrac }[2]{{}^{#1}_{#2}}\)
\(\let \splitdfrac \splitfrac \)
\(\newcommand {\LWRoverlaysymbols }[2]{\mathord {\smash {\mathop {#2\strut }\limits ^{\smash {\lower 3ex{#1}}}}\strut }}\)
\(\newcommand{\alphaup}{\unicode{x03B1}}\)
\(\newcommand{\betaup}{\unicode{x03B2}}\)
\(\newcommand{\gammaup}{\unicode{x03B3}}\)
\(\newcommand{\digammaup}{\unicode{x03DD}}\)
\(\newcommand{\deltaup}{\unicode{x03B4}}\)
\(\newcommand{\epsilonup}{\unicode{x03F5}}\)
\(\newcommand{\varepsilonup}{\unicode{x03B5}}\)
\(\newcommand{\zetaup}{\unicode{x03B6}}\)
\(\newcommand{\etaup}{\unicode{x03B7}}\)
\(\newcommand{\thetaup}{\unicode{x03B8}}\)
\(\newcommand{\varthetaup}{\unicode{x03D1}}\)
\(\newcommand{\iotaup}{\unicode{x03B9}}\)
\(\newcommand{\kappaup}{\unicode{x03BA}}\)
\(\newcommand{\varkappaup}{\unicode{x03F0}}\)
\(\newcommand{\lambdaup}{\unicode{x03BB}}\)
\(\newcommand{\muup}{\unicode{x03BC}}\)
\(\newcommand{\nuup}{\unicode{x03BD}}\)
\(\newcommand{\xiup}{\unicode{x03BE}}\)
\(\newcommand{\omicronup}{\unicode{x03BF}}\)
\(\newcommand{\piup}{\unicode{x03C0}}\)
\(\newcommand{\varpiup}{\unicode{x03D6}}\)
\(\newcommand{\rhoup}{\unicode{x03C1}}\)
\(\newcommand{\varrhoup}{\unicode{x03F1}}\)
\(\newcommand{\sigmaup}{\unicode{x03C3}}\)
\(\newcommand{\varsigmaup}{\unicode{x03C2}}\)
\(\newcommand{\tauup}{\unicode{x03C4}}\)
\(\newcommand{\upsilonup}{\unicode{x03C5}}\)
\(\newcommand{\phiup}{\unicode{x03D5}}\)
\(\newcommand{\varphiup}{\unicode{x03C6}}\)
\(\newcommand{\chiup}{\unicode{x03C7}}\)
\(\newcommand{\psiup}{\unicode{x03C8}}\)
\(\newcommand{\omegaup}{\unicode{x03C9}}\)
\(\newcommand{\Alphaup}{\unicode{x0391}}\)
\(\newcommand{\Betaup}{\unicode{x0392}}\)
\(\newcommand{\Gammaup}{\unicode{x0393}}\)
\(\newcommand{\Digammaup}{\unicode{x03DC}}\)
\(\newcommand{\Deltaup}{\unicode{x0394}}\)
\(\newcommand{\Epsilonup}{\unicode{x0395}}\)
\(\newcommand{\Zetaup}{\unicode{x0396}}\)
\(\newcommand{\Etaup}{\unicode{x0397}}\)
\(\newcommand{\Thetaup}{\unicode{x0398}}\)
\(\newcommand{\Varthetaup}{\unicode{x03F4}}\)
\(\newcommand{\Iotaup}{\unicode{x0399}}\)
\(\newcommand{\Kappaup}{\unicode{x039A}}\)
\(\newcommand{\Lambdaup}{\unicode{x039B}}\)
\(\newcommand{\Muup}{\unicode{x039C}}\)
\(\newcommand{\Nuup}{\unicode{x039D}}\)
\(\newcommand{\Xiup}{\unicode{x039E}}\)
\(\newcommand{\Omicronup}{\unicode{x039F}}\)
\(\newcommand{\Piup}{\unicode{x03A0}}\)
\(\newcommand{\Varpiup}{\unicode{x03D6}}\)
\(\newcommand{\Rhoup}{\unicode{x03A1}}\)
\(\newcommand{\Sigmaup}{\unicode{x03A3}}\)
\(\newcommand{\Tauup}{\unicode{x03A4}}\)
\(\newcommand{\Upsilonup}{\unicode{x03A5}}\)
\(\newcommand{\Phiup}{\unicode{x03A6}}\)
\(\newcommand{\Chiup}{\unicode{x03A7}}\)
\(\newcommand{\Psiup}{\unicode{x03A8}}\)
\(\newcommand{\Omegaup}{\unicode{x03A9}}\)
\(\newcommand{\alphait}{\unicode{x1D6FC}}\)
\(\newcommand{\betait}{\unicode{x1D6FD}}\)
\(\newcommand{\gammait}{\unicode{x1D6FE}}\)
\(\newcommand{\digammait}{\mathit{\unicode{x03DD}}}\)
\(\newcommand{\deltait}{\unicode{x1D6FF}}\)
\(\newcommand{\epsilonit}{\unicode{x1D716}}\)
\(\newcommand{\varepsilonit}{\unicode{x1D700}}\)
\(\newcommand{\zetait}{\unicode{x1D701}}\)
\(\newcommand{\etait}{\unicode{x1D702}}\)
\(\newcommand{\thetait}{\unicode{x1D703}}\)
\(\newcommand{\varthetait}{\unicode{x1D717}}\)
\(\newcommand{\iotait}{\unicode{x1D704}}\)
\(\newcommand{\kappait}{\unicode{x1D705}}\)
\(\newcommand{\varkappait}{\unicode{x1D718}}\)
\(\newcommand{\lambdait}{\unicode{x1D706}}\)
\(\newcommand{\muit}{\unicode{x1D707}}\)
\(\newcommand{\nuit}{\unicode{x1D708}}\)
\(\newcommand{\xiit}{\unicode{x1D709}}\)
\(\newcommand{\omicronit}{\unicode{x1D70A}}\)
\(\newcommand{\piit}{\unicode{x1D70B}}\)
\(\newcommand{\varpiit}{\unicode{x1D71B}}\)
\(\newcommand{\rhoit}{\unicode{x1D70C}}\)
\(\newcommand{\varrhoit}{\unicode{x1D71A}}\)
\(\newcommand{\sigmait}{\unicode{x1D70E}}\)
\(\newcommand{\varsigmait}{\unicode{x1D70D}}\)
\(\newcommand{\tauit}{\unicode{x1D70F}}\)
\(\newcommand{\upsilonit}{\unicode{x1D710}}\)
\(\newcommand{\phiit}{\unicode{x1D719}}\)
\(\newcommand{\varphiit}{\unicode{x1D711}}\)
\(\newcommand{\chiit}{\unicode{x1D712}}\)
\(\newcommand{\psiit}{\unicode{x1D713}}\)
\(\newcommand{\omegait}{\unicode{x1D714}}\)
\(\newcommand{\Alphait}{\unicode{x1D6E2}}\)
\(\newcommand{\Betait}{\unicode{x1D6E3}}\)
\(\newcommand{\Gammait}{\unicode{x1D6E4}}\)
\(\newcommand{\Digammait}{\mathit{\unicode{x03DC}}}\)
\(\newcommand{\Deltait}{\unicode{x1D6E5}}\)
\(\newcommand{\Epsilonit}{\unicode{x1D6E6}}\)
\(\newcommand{\Zetait}{\unicode{x1D6E7}}\)
\(\newcommand{\Etait}{\unicode{x1D6E8}}\)
\(\newcommand{\Thetait}{\unicode{x1D6E9}}\)
\(\newcommand{\Varthetait}{\unicode{x1D6F3}}\)
\(\newcommand{\Iotait}{\unicode{x1D6EA}}\)
\(\newcommand{\Kappait}{\unicode{x1D6EB}}\)
\(\newcommand{\Lambdait}{\unicode{x1D6EC}}\)
\(\newcommand{\Muit}{\unicode{x1D6ED}}\)
\(\newcommand{\Nuit}{\unicode{x1D6EE}}\)
\(\newcommand{\Xiit}{\unicode{x1D6EF}}\)
\(\newcommand{\Omicronit}{\unicode{x1D6F0}}\)
\(\newcommand{\Piit}{\unicode{x1D6F1}}\)
\(\newcommand{\Rhoit}{\unicode{x1D6F2}}\)
\(\newcommand{\Sigmait}{\unicode{x1D6F4}}\)
\(\newcommand{\Tauit}{\unicode{x1D6F5}}\)
\(\newcommand{\Upsilonit}{\unicode{x1D6F6}}\)
\(\newcommand{\Phiit}{\unicode{x1D6F7}}\)
\(\newcommand{\Chiit}{\unicode{x1D6F8}}\)
\(\newcommand{\Psiit}{\unicode{x1D6F9}}\)
\(\newcommand{\Omegait}{\unicode{x1D6FA}}\)
\(\let \digammaup \Digammaup \)
\(\renewcommand {\digammait }{\mathit {\digammaup }}\)
\(\newcommand {\smallin }{\unicode {x220A}}\)
\(\newcommand {\smallowns }{\unicode {x220D}}\)
\(\newcommand {\notsmallin }{\LWRoverlaysymbols {/}{\unicode {x220A}}}\)
\(\newcommand {\notsmallowns }{\LWRoverlaysymbols {/}{\unicode {x220D}}}\)
\(\newcommand {\rightangle }{\unicode {x221F}}\)
\(\newcommand {\intclockwise }{\unicode {x2231}}\)
\(\newcommand {\ointclockwise }{\unicode {x2232}}\)
\(\newcommand {\ointctrclockwise }{\unicode {x2233}}\)
\(\newcommand {\oiint }{\unicode {x222F}}\)
\(\newcommand {\oiiint }{\unicode {x2230}}\)
\(\newcommand {\ddag }{\unicode {x2021}}\)
\(\newcommand {\P }{\unicode {x00B6}}\)
\(\newcommand {\copyright }{\unicode {x00A9}}\)
\(\newcommand {\dag }{\unicode {x2020}}\)
\(\newcommand {\pounds }{\unicode {x00A3}}\)
\(\newcommand {\iddots }{\unicode {x22F0}}\)
\(\newcommand {\utimes }{\overline {\times }}\)
\(\newcommand {\dtimes }{\underline {\times }}\)
\(\newcommand {\udtimes }{\overline {\underline {\times }}}\)
\(\newcommand {\leftwave }{\left \{}\)
\(\newcommand {\rightwave }{\right \}}\)
\(\newcommand {\toprule }[1][]{\hline }\)
\(\let \midrule \toprule \)
\(\let \bottomrule \toprule \)
\(\newcommand {\cmidrule }[2][]{}\)
\(\newcommand {\morecmidrules }{}\)
\(\newcommand {\specialrule }[3]{\hline }\)
\(\newcommand {\addlinespace }[1][]{}\)
\(\newcommand {\LWRsubmultirow }[2][]{#2}\)
\(\newcommand {\LWRmultirow }[2][]{\LWRsubmultirow }\)
\(\newcommand {\multirow }[2][]{\LWRmultirow }\)
\(\newcommand {\mrowcell }{}\)
\(\newcommand {\mcolrowcell }{}\)
\(\newcommand {\STneed }[1]{}\)
\( \newcommand {\multicolumn }[3]{#3}\)
\(\newcommand {\tothe }[1]{^{#1}}\)
\(\newcommand {\raiseto }[2]{{#2}^{#1}}\)
\(\newcommand {\ang }[2][]{(\mathrm {#2})\degree }\)
\(\newcommand {\num }[2][]{\mathrm {#2}}\)
\(\newcommand {\si }[2][]{\mathrm {#2}}\)
\(\newcommand {\LWRSI }[2][]{\mathrm {#1\LWRSInumber \,#2}}\)
\(\newcommand {\SI }[2][]{\def \LWRSInumber {#2}\LWRSI }\)
\(\newcommand {\numlist }[2][]{\mathrm {#2}}\)
\(\newcommand {\numrange }[3][]{\mathrm {#2\,\unicode {x2013}\,#3}}\)
\(\newcommand {\SIlist }[3][]{\mathrm {#2\,#3}}\)
\(\newcommand {\SIrange }[4][]{\mathrm {#2\,#4\,\unicode {x2013}\,#3\,#4}}\)
\(\newcommand {\tablenum }[2][]{\mathrm {#2}}\)
\(\newcommand {\ampere }{\mathrm {A}}\)
\(\newcommand {\candela }{\mathrm {cd}}\)
\(\newcommand {\kelvin }{\mathrm {K}}\)
\(\newcommand {\kilogram }{\mathrm {kg}}\)
\(\newcommand {\metre }{\mathrm {m}}\)
\(\newcommand {\mole }{\mathrm {mol}}\)
\(\newcommand {\second }{\mathrm {s}}\)
\(\newcommand {\becquerel }{\mathrm {Bq}}\)
\(\newcommand {\degreeCelsius }{\unicode {x2103}}\)
\(\newcommand {\coulomb }{\mathrm {C}}\)
\(\newcommand {\farad }{\mathrm {F}}\)
\(\newcommand {\gray }{\mathrm {Gy}}\)
\(\newcommand {\hertz }{\mathrm {Hz}}\)
\(\newcommand {\henry }{\mathrm {H}}\)
\(\newcommand {\joule }{\mathrm {J}}\)
\(\newcommand {\katal }{\mathrm {kat}}\)
\(\newcommand {\lumen }{\mathrm {lm}}\)
\(\newcommand {\lux }{\mathrm {lx}}\)
\(\newcommand {\newton }{\mathrm {N}}\)
\(\newcommand {\ohm }{\mathrm {\Omega }}\)
\(\newcommand {\pascal }{\mathrm {Pa}}\)
\(\newcommand {\radian }{\mathrm {rad}}\)
\(\newcommand {\siemens }{\mathrm {S}}\)
\(\newcommand {\sievert }{\mathrm {Sv}}\)
\(\newcommand {\steradian }{\mathrm {sr}}\)
\(\newcommand {\tesla }{\mathrm {T}}\)
\(\newcommand {\volt }{\mathrm {V}}\)
\(\newcommand {\watt }{\mathrm {W}}\)
\(\newcommand {\weber }{\mathrm {Wb}}\)
\(\newcommand {\day }{\mathrm {d}}\)
\(\newcommand {\degree }{\mathrm {^\circ }}\)
\(\newcommand {\hectare }{\mathrm {ha}}\)
\(\newcommand {\hour }{\mathrm {h}}\)
\(\newcommand {\litre }{\mathrm {l}}\)
\(\newcommand {\liter }{\mathrm {L}}\)
\(\newcommand {\arcminute }{^\prime }\)
\(\newcommand {\minute }{\mathrm {min}}\)
\(\newcommand {\arcsecond }{^{\prime \prime }}\)
\(\newcommand {\tonne }{\mathrm {t}}\)
\(\newcommand {\astronomicalunit }{au}\)
\(\newcommand {\atomicmassunit }{u}\)
\(\newcommand {\bohr }{\mathit {a}_0}\)
\(\newcommand {\clight }{\mathit {c}_0}\)
\(\newcommand {\dalton }{\mathrm {D}_\mathrm {a}}\)
\(\newcommand {\electronmass }{\mathit {m}_{\mathrm {e}}}\)
\(\newcommand {\electronvolt }{\mathrm {eV}}\)
\(\newcommand {\elementarycharge }{\mathit {e}}\)
\(\newcommand {\hartree }{\mathit {E}_{\mathrm {h}}}\)
\(\newcommand {\planckbar }{\mathit {\unicode {x210F}}}\)
\(\newcommand {\angstrom }{\mathrm {\unicode {x212B}}}\)
\(\let \LWRorigbar \bar \)
\(\newcommand {\bar }{\mathrm {bar}}\)
\(\newcommand {\barn }{\mathrm {b}}\)
\(\newcommand {\bel }{\mathrm {B}}\)
\(\newcommand {\decibel }{\mathrm {dB}}\)
\(\newcommand {\knot }{\mathrm {kn}}\)
\(\newcommand {\mmHg }{\mathrm {mmHg}}\)
\(\newcommand {\nauticalmile }{\mathrm {M}}\)
\(\newcommand {\neper }{\mathrm {Np}}\)
\(\newcommand {\yocto }{\mathrm {y}}\)
\(\newcommand {\zepto }{\mathrm {z}}\)
\(\newcommand {\atto }{\mathrm {a}}\)
\(\newcommand {\femto }{\mathrm {f}}\)
\(\newcommand {\pico }{\mathrm {p}}\)
\(\newcommand {\nano }{\mathrm {n}}\)
\(\newcommand {\micro }{\mathrm {\unicode {x00B5}}}\)
\(\newcommand {\milli }{\mathrm {m}}\)
\(\newcommand {\centi }{\mathrm {c}}\)
\(\newcommand {\deci }{\mathrm {d}}\)
\(\newcommand {\deca }{\mathrm {da}}\)
\(\newcommand {\hecto }{\mathrm {h}}\)
\(\newcommand {\kilo }{\mathrm {k}}\)
\(\newcommand {\mega }{\mathrm {M}}\)
\(\newcommand {\giga }{\mathrm {G}}\)
\(\newcommand {\tera }{\mathrm {T}}\)
\(\newcommand {\peta }{\mathrm {P}}\)
\(\newcommand {\exa }{\mathrm {E}}\)
\(\newcommand {\zetta }{\mathrm {Z}}\)
\(\newcommand {\yotta }{\mathrm {Y}}\)
\(\newcommand {\percent }{\mathrm {\%}}\)
\(\newcommand {\meter }{\mathrm {m}}\)
\(\newcommand {\metre }{\mathrm {m}}\)
\(\newcommand {\gram }{\mathrm {g}}\)
\(\newcommand {\kg }{\kilo \gram }\)
\(\newcommand {\of }[1]{_{\mathrm {#1}}}\)
\(\newcommand {\squared }{^2}\)
\(\newcommand {\square }[1]{\mathrm {#1}^2}\)
\(\newcommand {\cubed }{^3}\)
\(\newcommand {\cubic }[1]{\mathrm {#1}^3}\)
\(\newcommand {\per }{/}\)
\(\newcommand {\celsius }{\unicode {x2103}}\)
\(\newcommand {\fg }{\femto \gram }\)
\(\newcommand {\pg }{\pico \gram }\)
\(\newcommand {\ng }{\nano \gram }\)
\(\newcommand {\ug }{\micro \gram }\)
\(\newcommand {\mg }{\milli \gram }\)
\(\newcommand {\g }{\gram }\)
\(\newcommand {\kg }{\kilo \gram }\)
\(\newcommand {\amu }{\mathrm {u}}\)
\(\newcommand {\nm }{\nano \metre }\)
\(\newcommand {\um }{\micro \metre }\)
\(\newcommand {\mm }{\milli \metre }\)
\(\newcommand {\cm }{\centi \metre }\)
\(\newcommand {\dm }{\deci \metre }\)
\(\newcommand {\m }{\metre }\)
\(\newcommand {\km }{\kilo \metre }\)
\(\newcommand {\as }{\atto \second }\)
\(\newcommand {\fs }{\femto \second }\)
\(\newcommand {\ps }{\pico \second }\)
\(\newcommand {\ns }{\nano \second }\)
\(\newcommand {\us }{\micro \second }\)
\(\newcommand {\ms }{\milli \second }\)
\(\newcommand {\s }{\second }\)
\(\newcommand {\fmol }{\femto \mol }\)
\(\newcommand {\pmol }{\pico \mol }\)
\(\newcommand {\nmol }{\nano \mol }\)
\(\newcommand {\umol }{\micro \mol }\)
\(\newcommand {\mmol }{\milli \mol }\)
\(\newcommand {\mol }{\mol }\)
\(\newcommand {\kmol }{\kilo \mol }\)
\(\newcommand {\pA }{\pico \ampere }\)
\(\newcommand {\nA }{\nano \ampere }\)
\(\newcommand {\uA }{\micro \ampere }\)
\(\newcommand {\mA }{\milli \ampere }\)
\(\newcommand {\A }{\ampere }\)
\(\newcommand {\kA }{\kilo \ampere }\)
\(\newcommand {\ul }{\micro \litre }\)
\(\newcommand {\ml }{\milli \litre }\)
\(\newcommand {\l }{\litre }\)
\(\newcommand {\hl }{\hecto \litre }\)
\(\newcommand {\uL }{\micro \liter }\)
\(\newcommand {\mL }{\milli \liter }\)
\(\newcommand {\L }{\liter }\)
\(\newcommand {\hL }{\hecto \liter }\)
\(\newcommand {\mHz }{\milli \hertz }\)
\(\newcommand {\Hz }{\hertz }\)
\(\newcommand {\kHz }{\kilo \hertz }\)
\(\newcommand {\MHz }{\mega \hertz }\)
\(\newcommand {\GHz }{\giga \hertz }\)
\(\newcommand {\THz }{\tera \hertz }\)
\(\newcommand {\mN }{\milli \newton }\)
\(\newcommand {\N }{\newton }\)
\(\newcommand {\kN }{\kilo \newton }\)
\(\newcommand {\MN }{\mega \newton }\)
\(\newcommand {\Pa }{\pascal }\)
\(\newcommand {\kPa }{\kilo \pascal }\)
\(\newcommand {\MPa }{\mega \pascal }\)
\(\newcommand {\GPa }{\giga \pascal }\)
\(\newcommand {\mohm }{\milli \ohm }\)
\(\newcommand {\kohm }{\kilo \ohm }\)
\(\newcommand {\Mohm }{\mega \ohm }\)
\(\newcommand {\pV }{\pico \volt }\)
\(\newcommand {\nV }{\nano \volt }\)
\(\newcommand {\uV }{\micro \volt }\)
\(\newcommand {\mV }{\milli \volt }\)
\(\newcommand {\V }{\volt }\)
\(\newcommand {\kV }{\kilo \volt }\)
\(\newcommand {\W }{\watt }\)
\(\newcommand {\uW }{\micro \watt }\)
\(\newcommand {\mW }{\milli \watt }\)
\(\newcommand {\kW }{\kilo \watt }\)
\(\newcommand {\MW }{\mega \watt }\)
\(\newcommand {\GW }{\giga \watt }\)
\(\newcommand {\J }{\joule }\)
\(\newcommand {\uJ }{\micro \joule }\)
\(\newcommand {\mJ }{\milli \joule }\)
\(\newcommand {\kJ }{\kilo \joule }\)
\(\newcommand {\eV }{\electronvolt }\)
\(\newcommand {\meV }{\milli \electronvolt }\)
\(\newcommand {\keV }{\kilo \electronvolt }\)
\(\newcommand {\MeV }{\mega \electronvolt }\)
\(\newcommand {\GeV }{\giga \electronvolt }\)
\(\newcommand {\TeV }{\tera \electronvolt }\)
\(\newcommand {\kWh }{\kilo \watt \hour }\)
\(\newcommand {\F }{\farad }\)
\(\newcommand {\fF }{\femto \farad }\)
\(\newcommand {\pF }{\pico \farad }\)
\(\newcommand {\K }{\mathrm {K}}\)
\(\newcommand {\dB }{\mathrm {dB}}\)
\(\newcommand {\kibi }{\mathrm {Ki}}\)
\(\newcommand {\mebi }{\mathrm {Mi}}\)
\(\newcommand {\gibi }{\mathrm {Gi}}\)
\(\newcommand {\tebi }{\mathrm {Ti}}\)
\(\newcommand {\pebi }{\mathrm {Pi}}\)
\(\newcommand {\exbi }{\mathrm {Ei}}\)
\(\newcommand {\zebi }{\mathrm {Zi}}\)
\(\newcommand {\yobi }{\mathrm {Yi}}\)
\(\require {mhchem}\)
\(\require {cancel}\)
\(\newcommand {\fint }{âĺŊ}\)
\(\newcommand {\hdots }{\cdots }\)
\(\newcommand {\mathnormal }[1]{#1}\)
\(\newcommand {\vecs }[2]{\vec {#1}_{#2}}\)
\(\renewcommand {\O }{\ensuremath {\mathcal {O}}}\)
\(\renewcommand {\P }{\ensuremath {\mathbb {P}}}\)
\(\renewcommand {\i }{\ensuremath {\mathrm {i}}}\)
\(\newcommand {\area }{\ensuremath {\mathrm {area}}}\)
\(\newcommand {\name }[1]{\textsc {#1}}\)
\(\newcommand {\smallpmatrix }[1]{\left (\begin {smallmatrix}#1\end {smallmatrix}\right )}\)
\(\newcommand {\matlab }{{\fontfamily {bch}\scshape \selectfont {}Matlab}}\)
\(\newcommand {\innerproduct }[1]{\left \langle {#1}\right \rangle }\)
\(\newcommand {\norm }[1]{\left \Vert {#1}\right \Vert }\)
\(\renewcommand {\natural }{\mathbb {N}}\)
\(\newcommand {\integer }{\mathbb {Z}}\)
\(\newcommand {\rational }{\mathbb {Q}}\)
\(\newcommand {\real }{\mathbb {R}}\)
\(\newcommand {\complex }{\mathbb {C}}\)
\(\renewcommand {\d }{\mathop {}\!\mathrm {d}}\)
\(\newcommand {\dr }{\d {}r}\)
\(\newcommand {\ds }{\d {}s}\)
\(\newcommand {\dt }{\d {}t}\)
\(\newcommand {\du }{\d {}u}\)
\(\newcommand {\dv }{\d {}v}\)
\(\newcommand {\dw }{\d {}w}\)
\(\newcommand {\dx }{\d {}x}\)
\(\newcommand {\dy }{\d {}y}\)
\(\newcommand {\dz }{\d {}z}\)
\(\newcommand {\dsigma }{\d {}\sigma }\)
\(\newcommand {\dphi }{\d {}\phi }\)
\(\newcommand {\dvarphi }{\d {}\varphi }\)
\(\newcommand {\dtau }{\d {}\tau }\)
\(\newcommand {\dxi }{\d {}\xi }\)
\(\newcommand {\dtheta }{\d {}\theta }\)
\(\newcommand {\tp }{\mathrm {T}}\)
Kontrollpolygon und Gewichte
rationale Bézier-Kurve: Eine rationale Bézier-Kurve \(r\) vom Grad \(\le n\) in \(\real ^d\) hat
eine rationale Parametrisierung durch Bernstein-Polynome:
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r(t) := \frac {\sum _{k=0}^n (c_k w_k) b_k^n(t)}{\sum _{k=0}^n w_k b_k^n(t)} =\sum _{k=0}^n c_k \beta _k^n(t),\quad \beta _k^n(t) := \frac {w_k b_k^n(t)}{\sum _{\ell =0}^n w_\ell b_\ell
^n(t)},\quad t \in [0, 1],
\end{align*}
mit positiven Gewichten \(w_k\) und Kontrollpunkten \(c_k = (c_{k,1}, \dotsc , c_{k,d}) \in \real ^d\).
Wie bei polynomialen Bézier-Kurven modelliert das Kontrollpolygon \(c\) qualitativ die Form von \(r\). Die Gewichte ermöglichen eine zusätzliche
Gestaltungsflexibilität durch Kontrolle der Signifikanz der zugehörigen Kontrollpunkte.
Skalierung der Gewichte: Eine Skalierung der Gewichte \(w_k \rightarrow \lambda w_k\) mit einem gemeinsamen Faktor \(\lambda \) ändert die Parametrisierung einer rationalen Bézier-Kurve nicht. Dieser
zusätzliche Freiheitsgrad kann durch bloße Angabe der Verhältnisse \(w_k : w_{k-1}\) eliminiert werden. Diese Verhältnisse können durch Angabe der sogenannten Gewichtspunkte visualisiert werden:
\(\seteqnumber{0}{}{0}\)
\begin{align*}
d_k := \frac {w_{k-1}}{w_{k-1} + w_k} c_{k-1} + \frac {w_k}{w_{k-1} + w_k} c_k,\quad k = 1, \dotsc , n.
\end{align*}
Die Position von \(d_k\) in der Kante \([c_{k-1}, c_k]\) bestimmt eindeutig \(w_k : w_{k-1} \in (0, \infty )\).
affine Invarianz: Die Parametrisierung \(r(t) = \sum _{k=0}^n c_k \beta _k^n(t)\), \(\beta _k^n = \frac {w_k b_k^n}{\sum _{\ell =0}^n w_\ell b_\ell ^n}\), einer rationalen Bézier-Kurve ist affin invariant, d. h. wenn eine affine Transformation \(x \mapsto Ax + a\) auf \(r\) angewendet wird, dann resultiert dieselbe Kurve wie nach einer Transformation der
Kontrollpunkte:
\(\seteqnumber{0}{}{0}\)
\begin{align*}
Ar + a = \sum _{k=0}^n (Ac_k + a) \beta _k^n.
\end{align*}
Eigenschaften von rationalen Bézier-Kurven
Eigenschaften von rationalen Bézier-Kurven: Eine rationale Bézier-Kurve, die durch \(r(t) = \frac {\sum _{k=0}^n (c_k w_k) b_k^n(t)}{\sum _{k=0}^n w_k b_k^n(t)}\), \(t
\in [0, 1]\), parametrisiert wird, besitzt folgende Eigenschaften:
\(r(t)\) liegt in der konvexen Hülle von \(c_0, \dotsc , c_n\)
\(\lim _{w_k \to \infty } r(t) = c_k\) für \(t \in (0, 1)\)
\(r(0) = c_0\) und \(r(1) = c_n\)
\(r’(0) = n \frac {w_1}{w_0} (c_1 - c_0)\) und \(r’(1) = n \frac {w_{n-1}}{w_n} (c_n - c_{n-1})\)
Die letzten beiden Eigenschaften werden wieder als Endpunktinterpolation bezeichnet.
Parametertransformation und Skalierung: Eine rationale Bézier-Kurve, die durch
\(r(t) = \frac {\sum _{k=0}^n (c_k w_k) b_k^n(t)}{\sum _{k=0}^n w_k b_k^n(t)}\), \(t \in [0, 1]\), parametrisiert wird, wird durch eine Skalierung \(w \rightarrow \lambda w\) der Gewichte mit einem
gemeinsamen Faktor \(\lambda \) und durch eine lineare rationale Parametertransformation der Form
\(\seteqnumber{0}{}{0}\)
\begin{align*}
t = \frac {s}{\varrho s + 1 - \varrho },\quad \varrho < 1
\end{align*}
nicht verändert. Die zwei Freiheitsgrade können dazu benutzt werden, das erste und das letzte Gewicht auf \(1\) zu setzen, d. h.
\(\seteqnumber{0}{}{0}\)
\begin{align*}
w_k \rightarrow \widetilde {w}_k := w_0^{k/n-1} w_n^{-k/n} w_k.
\end{align*}
Die entstehende Parametrisierung wird als Standard-Parametrisierung einer rationalen Bézier-Kurve bezeichnet.
Algorithmen für rationale Bézier-Kurven
homogene Koordinaten: Die Parametrisierung \(r(t) = \frac {\sum _{k=0}^n (c_k w_k) b_k^n(t)}{\sum _{k=0}^n w_k b_k^n(t)}\), \(t \in [0, 1]\), einer rationalen Bézier-Kurve kann mit einer polynomialen
Parametrisierung
\(\seteqnumber{0}{}{0}\)
\begin{align*}
\widetilde {r} = (p, q) := \sum _{k=0}^n (c_k w_k, w_k) b_k^n
\end{align*}
in homogenen Koordinaten identifiziert werden, d. h. \(r = (p_1, \dotsc , p_d)/q\). Diese Interpretation ist bei der Implementierung von Algorithmen wie Auswertung, Differentiation und Subdivision nützlich.
Die Algorithmen für polynomiale Bézier-Kurven werden auf \(\widetilde {r}\) angewendet und das Ergebnis in \(\real ^{d+1}\) wird durch Division durch die letzte Koordinate auf \(\real ^d\) projiziert.
Ableitung einer rationalen Bézier-Kurve: Die Parametrisierung \(r(t) = \frac {\sum _{k=0}^n (c_k w_k) b_k^n(t)}{\sum _{k=0}^n w_k b_k^n(t)}\), \(t \in [0, 1]\), einer
rationalen Bézier-Kurve mit Zähler \(p(t) := \sum _{k=0}^n (c_k w_k) b_k^n(t)\) und Nenner
\(q(t) := \sum _{k=0}^n w_k b_k^n(t)\) kann mithilfe der Leibniz-Regel differenziert werden:
\(\seteqnumber{0}{}{0}\)
\begin{align*}
\left (\frac {d}{dt}\right )^m (r(t)q(t)) = \sum _{\ell =0}^m \binom {m}{\ell } r^{(m-\ell )}(t) q^{(\ell )}(t) = p^{(m)}(t).
\end{align*}
Diese Identität liefert eine Rekursion für \(r^{(m)}\) bestehend aus Ableitungen niedrigerer Ordnung:
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r’ &= (p’ - rq’) / q \\ r’’ &= (p’’ - 2r’q’ - rq’’) / q\\ r’’’ &= (p’’’ - 3r’’q’ - 3r’q’’ - rq’’’) / q\\ &\;\;\vdots \;\;.
\end{align*}
Für die Auswertung von Ableitungen kann man daher die Formeln und Algorithmen für
Standard-Bézier-Kurven benutzen. Dabei errechnet man simultan die Ableitungen von \(p\) und \(q\) und setzt die Ergebnisse in die Rekursion ein.
Beispiel (erste und zweite Ableitung einer rationalen Bézier-Kurve): Mit diesen Formeln werden nun die ersten beiden Ableitungen von \(r(t)\) in \(t = 0\) berechnet. Dabei werden
die Formeln \(\widetilde {r}’(0) = n(a_1 - a_0)\) und \(\widetilde {r}’’(0) = n(n - 1)(a_2 - 2a_1 + a_0)\) für die polynomiale Bézier-Kurve \((p, q)\) mit Kontrollpunkten \(a_k = (c_k w_k, w_k)\)
benutzt.
Für die erste Ableitung erhält man mit der Formel \(r’ = (p’ - rq’)/q\) für \(t = 0\)
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r’(0) = (n(c_1 w_1 - c_0 w_0) - c_0 n (w_1 - w_0)) / w_0 = n \frac {w_1}{w_0} (c_1 - c_0)
\end{align*}
wie oben erwähnt.
Ähnlich verläuft die Auswertung der zweiten Ableitung \(r’’ = (p’’ - 2r’q’ - rq’’)/q\) in \(t = 0\):
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r’’(0) &= (\alpha (c_2 w_2 - 2 c_1 w_1 + c_0 w_0) - \beta (c_1 - c_0) (w_1 - w_0) - \alpha c_0 (w_2 - 2 w_1 + w_0)) / w_0\\ &= n (n - 1) \frac {w_2}{w_0} (c_2 - c_1) - n \frac
{2nw_1^2 - 2w_0w_1 - (n - 1)w_0w_2}{w_0^2} (c_1 - c_0)
\end{align*}
mit \(\alpha = n (n - 1)\) und \(\beta = 2n^2 w_1/w_0\). Man kann die Gültigkeit von solchen Formeln mit ein paar Überprüfungen nachvollziehen: Wenn die Formel stimmt, muss für
\(w_0 = w_1 = w_2 = 1\) der polynomiale Fall herauskommen (was hier der Fall ist). Außerdem dürfen Gewichte immer nur als Quotienten auftreten, weil sonst die Homogenität verletzt ist – eine Multiplikation
der Gewichte mit einem gemeinsamen Faktor darf keinen Einfluss haben.
Beispiel (Krümmung von rationalen Bézier-Kurven): Mit den Formeln zur Differentiation kann man auch die Krümmung von rationalen Bézier-Kurven an den
Endpunkten bestimmen. Dazu verwendet man die Definition \(\kappa = |r’ \times r’’|/|r’|^3\) mit \(|f \times g|\) dem Flächeninhalt des von den Vektoren \(f\) und \(g\) aufgespannten Parallelogramms. Mit
obigen Formeln und der Identität \(|(\gamma _2 (c_2 - c_1) - \gamma _3 (c_1 - c_0)) \times \gamma _1 (c_1 - c_0)| = |\gamma _1 \gamma _2| |(c_2 - c_1) \times (c_1 - c_0)|\) ergibt sich nach ein
paar Vereinfachungen
\(\seteqnumber{0}{}{0}\)
\begin{align*}
\kappa (0) = \frac {2(n - 1)}{n} \frac {w_0 w_2}{w_1^2} \frac {\area [c_0, c_1, c_2]}{|c_1 - c_0|^3}
\end{align*}
mit \([c_0, c_1, c_2]\) dem Dreieck mit den Eckpunkten \(c_k\). Diese Formel und die analoge Identität für den anderen Endpunkt unterscheiden sich von den Ausdrücken für
polynomiale Bézier-Kurven nur um einen Faktor mit den relevanten Gewichten.
Kegelschnitte
homogene Koordinaten für Kegelschnitte: Kegelschnitte sind Kurven, deren Koordinaten Nullstellen einer quadratischen Gleichung sind, d. h.
\(\seteqnumber{0}{}{0}\)
\begin{align*}
x^t A x + 2 b^t x + c = \sum _{i,j=1}^n a_{i,j} x_i x_j + 2 \sum _{i=1}^n b_i x_i + c = 0
\end{align*}
mit einer symmetrischen Matrix \(A\). Die Kreisgleichung \(x_1^2 + x_2^2 - 1 = 0\) ist beispielsweise in dieser Darstellung. Nun identifiziert man \((x_1, x_2) = x \sim z = (z_1, z_2, z_3)\) mit \(x_1 = z_1/z_3\) und
\(x_2 = z_2/z_3\) und multipliziert die Gleichung mit \(z_3^2\) durch. Dann erhält man \(z_1^2 + z_2^2 - z_3^2 = 0\) bzw. allgemein
\(\seteqnumber{0}{}{0}\)
\begin{align*}
z^t \widetilde {A} z = \sum _{i,j=1}^{n+1} \widetilde {a}_{i,j} z_i z_j = 0
\end{align*}
mit einer symmetrischen Matrix \(\widetilde {A}\). Der resultierende Term enthält nur noch (reine oder gemischte) Quadrate und ist nützlich bei der Kegelschnitt-Bestimmung von rationalen Bézier-Kurven.
Umgekehrt kann man natürlich aus jeder Gleichung in homogenen Koordinaten die parametrische Darstellung durch Teilen durch \(z_{n+1}^2\) wieder bestimmen.
Bézier-Form von Kegelschnitten: Jede quadratische rationale Bézier-Kurve, die durch
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r = \frac {(c_0 w_0) b_0^2 + (c_1 w_1) b_1^2 + (c_2 w_2) b_2^2} {w_0 b_0^2 + w_1 b_1^2 + w_2 b_2^2}
\end{align*}
parametrisiert wird, stellt ein Segment eines Kegelschnitts dar.
Umgekehrt kann jeder nicht-entartete Kegelschnitt durch eine erweiterte Parametrisierung \(r(t)\), \(t \in \real \cup \{\infty \}\), dargestellt werden. Wenn die
Kontrollpunkte nicht auf einer Geraden liegen, lässt sich am Vorzeichen von \(d := w_0 w_2 - w_1^2\) der Typ der quadratischen rationalen Bézier-Kurve feststellen:
\(d > 0\): Ellipse
\(d = 0\): Parabel
\(d < 0\): Hyperbel
Beispiel (Parametrisierungen für Standard-Kegelschnitte):
Parametrisierungen für die Standard-Kegelschnitte mit den Normalformen
\(\seteqnumber{0}{}{0}\)
\begin{align*}
x_1^2 + x_2^2 = 1,\quad x_1^2 = x_2,\quad x_1 x_2 = 1
\end{align*}
sind im Folgenden angegeben.
\(\seteqnumber{0}{}{0}\)
\begin{align*}
r(t) = \frac {(1 - t^2, 2t)}{1 + t^2},&\quad (C, w) = \begin{pmatrix}1 & 0 & 1\\1 & 1 & 1\\0 & 1 & 2\end {pmatrix} &&\text {(Standard-Kreis)}\\ r(t) =
\frac {(t, t^2)}{1},&\quad (C, w) = \begin{pmatrix}0 & 0 & 1\\1/2 & 0 & 1\\1 & 1 & 1\end {pmatrix} &&\text {(Standard-Parabel)}\\ r(t) = \frac {((2 - t)^2,
(2 + t)^2)}{4 - t^2},&\quad (C, w) = \begin{pmatrix}1 & 1 & 4\\1/2 & 3/2 & 4\\1/3 & 3 & 3\end {pmatrix} &&\text {(Standard-Hyperbel)}
\end{align*}
Beispiel (implizite Darstellung aus Parametrisierung): Für die quadratische rationale Bézier-Kurve parametrisiert durch \(r = (p_1, p_2)/q\) mit Kontrollpunkten \(c_0 = (0, 1)\), \(c_1 = (0, 0)\) und
\(c_2 = (2, 0)\) und Gewichten \(w_0 = 1\), \(w_1 = 1/2\) und \(w_2 = 1\) wird eine implizite Darstellung
\(\seteqnumber{0}{}{0}\)
\begin{align*}
(p_1, p_2, q) \begin{pmatrix}a_{1,1} & a_{1,2} & a_{1,3}\\a_{2,1} & a_{2,2} & a_{2,3}\\ a_{3,1} & a_{3,2} & a_{3,3}\end {pmatrix} (p_1, p_2, q)^t = 0
\end{align*}
gesucht. Wegen \(d = w_0 w_2 - w_1^2 = 1 - (1/2)^2 > 0\) stellt \(r\) eine Ellipse dar.
Mit den Kontrollpunkten und den Gewichten kann man die Koordinaten vom Zähler und den Nenner von \(r\) bestimmen: \(p_1(t) = 2t^2\), \(p_2(t) = (1 - t)^2\) und \(q(t) = (1 - t)^2 + (1 - t) t +
t^2\).
Diese Gleichungen substituiert man in die implizite Gleichung und erhält \((a_{2,2} + 2a_{2,3} + a_{3,3}) - (4a_{2,2} + 6a_{2,3} + 2a_{3,3}) t + (4a_{1,2} + 4a_{1,3} + 6a_{2,2} + 8a_{2,3} +
3a_{3,3}) t^2 - (8a_{1,2} + 4a_{1,2} + 4a_{2,2} + 6a_{2,3} + 2a_{3,3}) t^3 + (4a_{1,1} + 4a_{1,2} + 4a_{1,3} + a_{2,2} + 2a_{2,3} + a_{3,3}) t^4 = 0\).
Per Koeffizientenvergleich erhält man die Lösung
\(a_{1,1} = 1\), \(a_{1,2} = 1\), \(a_{1,3} = -2\), \(a_{2,2} = 4\), \(a_{2,3} = -4\), \(a_{3,3} = 4\) des homogenen LGS.
Damit bekommt man die implizite Gleichung in homogenen Koordinaten
\(\seteqnumber{0}{}{0}\)
\begin{align*}
p_1^2 + 2p_1p_2 - 4p_1q + 4p_2^2 - 8p_2q + 4q^2 = 0.
\end{align*}
Nach Division durch \(q^2\) hat man die Gleichung in kartesischen Koordinaten
\(\seteqnumber{0}{}{0}\)
\begin{align*}
x_1^2 + 2x_1x_2 - 4x_1 + 4x_2^2 - 8x_2 + 4 = 0.
\end{align*}
mit \(x_k = p_k/q\).
Beispiel (Parametrisierung aus impliziter Darstellung): Die umgekehrte Richtung, die Bestimmung einer quadratischen rationalen Bézier-Parametrisierung \(r = p/q\) für einen gegebenen Kegelschnitt, ist
ähnlich einfach. Zunächst wählt man zwei beliebige Punkte auf der Kurve als Kontrollpunkte \(c_0\) und \(c_2\). Wegen Endpunktinterpolation ist der mittlere Kontrollpunkt \(c_1\) der Schnittpunkt
der Tangenten an \(c_0\) und \(c_2\) (die Tangenten seien nicht parallel). Für eine Parametrisierung in Standardform gilt \(w_0 = 1 = w_2\) und das mittlere Gewicht kann durch Einsetzen eines Punktes der
Parametrisierung ausgerechnet werden.
Als Beispiel wird diese Prozedur für die Hyperbel \(Q\colon f(x) = 3x_1^2 - x_2^2 + 1 = 0\) durchgeführt. Als Endpunkte für die quadratische rationale Bézier-Parametrisierung wird \(c_0 = (0,
1)\) und \(c_2 = (1, 2)\) gewählt. Die Gleichung der Tangente im Punkt \((1, 2)\) ist mit \(\nabla f(1, 2) = (6, -4)\) gleich \((1, 2) + t \cdot (4, 6) = (1 + 4t, 2 + 6t)\). Weil die Hyperbel in \((0,
1)\) eine horizontale Tangente hat, ist der Schnittpunkt \(c_1 = (1/3, 1)\). Für die Bestimmung von \(w_1\) wertet man \(r = (p_1, p_2)/q\) mit \(p_1 = 1/3 w_1 b_1^2 + b_2^2\), \(p_2 = b_0^2 + w_1 b_1^2
+ 2 b_2^2\) und \(q = b_0^2 + w_1 b_1^2 + b_2^2\) in \(t = 1/2\) aus.
Substituiert man \((x_1, x_2) = (p_1(1/2), p_2(1/2))/q(1/2)\) mit \(p_1(1/2) = w_1/6 + 1/4\), \(p_2(1/2) = 1/4 + w_1/2 + 1/2\) und \(q(1/2) = 1/4 + w_1/2 + 1/4\) in die Gleichung der Hyperbel \(Q\) und
multipliziert mit \(q(1/2)^2\), so erhält man die quadratische Gleichung \(\frac {1}{8} - \frac {1}{12} w_1^2 = 0\) mit der positiven Lösung \(w_1 = \sqrt {3/2}\).