Geometrické modelovanie kriviek

Analytické krivky

    Analyticky môžeme krivku v 2D zadať :

    implicitne - F(x,y) = 0
    explicitne - y = f(x)
    parametricky - x = x(t); y = y(t)


Príklad: Majme kružnicu so stredom v bode S[0,0] a polomerom r

  • Implicitne  (x2) + (y2) = r2
  • Explicitne  y = sqrt(r2-x2)
  • Parametricky x = cos t; y = sin t for t ∈<0,2p>

$$$APPLET

Applet Select one point on circle.

Interpolačné krivky

    Zostrojenie interpolačnej krivky spočíva v konštrukcii krivky, ktorá prechádza danými uzlovými bodmi. V numerickej matematike sa na výpočet určitého integrálu používajú interpolácie pomocou polynómov. V počítačovej grafike sa  interpolácia používa na zostrojovanie kriviek pre zadané riadiace body, ktorými interpolačná krivka prechádza. Problémom je určenie hodnoty parametra, pre ktorý získame daný riadiaci (určujúci) bod interpolačnej krivky. Najznámejšia interpolačná krivka je Fergusonova kubika. Názov kubika sa používa pre krivky 3. stupňa.

Fergusonova kubika

    Túto krivku zaviedol v roku 1964 J. C. Ferguson. Je určená dvoma riadiacimi bodmi V1 a V2 a hodnotami vektorov v týchto bodoch v1 a v2. Krivka začína v bode V1 a končí v bode V2. Tvar krivky je určený smerom a veľkosťou dotykových vektorov v1 a v2. Ak sú obidva vektory nulové, výsledná krivka bude úsečka.

Fergusonova kubika má tvar :

          |  2 -2  1  1 | | V1 |
B(t)= T . | -3  3 -2 -1 |.| V2 |,
          |  0  0  1  0 | | v1 |
          |  1  0  0  0 | | v2 |
kde T = | t3, t2, t, 1 |, t ∈ <0,1>.

Úpravou dostaneme

    B(t) = V1*F1(t) + V2*F2(t) + v 1*F3(t) + v2*F4(t),

kde

    F1(t) = 2t3 - 3t2 +1
    F2(t) = 2t3 + 3t2
    F3(t) = t3  - 2t2 +t
    F4(t) = t3  - t2.

$$$APPLET

Fergusonova kubika

Linky:
Fergusonova krivka a Catmull-Rom spline

Catmull-Rom Spline

Majme daných n+1 riadiacich bodov {P0, P1,...,Pn}. Chceme nájsť krivku, ktorá interpoluje tieto riadiace body (prechádza nimi) a je lokálne upravovateľná (pri zmene riadiaceho bodu sa zmení krivka len lokálne). Krivku zadefinujeme pre každý jej segment <Pi, Pi+1> pomocou prislušných riadiacich bodov a vektorov (Pi+1 - Pi-1)/2 a (Pi+2 - Pi)/2.

Aplikovaním týchto hodnôt do Fergusonovej kubiky dostaneme

                     |  Pi-1 |
B(t)= [ 1 t t2 t3] M |   Pi  |
                     |  Pi+1 |
                     |  Pi+2 |
kde
        |  2 -2  0  1 |
M = 1/2 | -1  0  1 -1 |
        |  2 -5  4 -1 |
        | -1  3 -3  1 |

Túto maticovú reprezentáciu môžeme aplikovať na všetky segmenty okrem prvého a posledného kde hodnoty Pi-1 a Pi+2 nevieme a preto ich musíme dodefinovať alebo určiť nejakou metódou.

$$$APPLET

Applet Catmull-Rom Spline. Create new points with mouse. You can move created points with mouse, delete created points - shift key + select point, add point between two points - key ctrl + select point. Also you can change color on right side. Author Zachar Martin

Source code

Cubic Hermite spline

$$$APPLET

Making of an interpolation curve consist in construction of curve, which runs through given key points. The key points, placed by the artist, are used by the computer algorithm to form a smooth curve. The applet includes adding, deleting and moving of the key(control) points. Author Kováčik Alojz a Manduch Martin

Source code

Cardinal spline

$$$APPLET

Applet At the start, there will be by default a cardinal spline with five points drawn. You can remove a point by right clicking on it. Point can be added by clicking on the canvas. Points can be moved by dragging. A point can be added between two points by clicking with middle button. There will be also a slider to adjust the tension of the spline. By every edit the cardinal spline will be redrawn. There is a control panel on the right side of the panel, where one can set what to show on the screen. There is also some help present. By adding applet on site it can by adjusted by two parameters: showControls and showBezierVectors The values can be set to true or false. Parameter showControls is set by default to true and showBezierVectors is by default set to false. Author Chládek Michal

Source code

Aproximačné krivky

    Pre aproximačnú krivku máme daných niekoľko bodov, ale väčšinou nepožadujeme, aby nimi prechádzala. Základ konštruovania takýchto kriviek položili Bézier a Casteljau v rokoch 1959-62 a spočíva v aproximácii danej krivky pomocou riadiaceho polygónu (lomenej čiary), ktorá určuje výsledný tvar krivky.

Parabola

    Parabola je jednoznačne daná dvoma svojimi bodmi a dotyčnicami v nich.

Ratio

   Pre úsečku AC, kde bod B ∈ AC definujeme ratio (ABC) = (B-A)/(C-B).

$$$APPLET

ratio



Konštrukcia paraboly

    Predpokladajme, že máme dané body A, D a C a t ∈ <0,1>. Pre body E, B a F potom platí : ratio (AED) = ratio (EBF) = ratio (DFC).

Konštrukcia paraboly spočíva v zostrojovaní bodu paraboly B s parametrom r = t /(1-t). 
Potom

1. Zostrojíme body E, F : 

     E : ratio(AED) = r ( <=> E = (1-t)*A + t*D )
     F : ratio(DFC) = r ( <=> F = (1-t)*D + t*C )

2. Zostrojíme bod B :

     B : ratio(EBF) = r ( <=> B = (1-t)*E + t*F )

3. B je bod paraboly prislúchajúci parametru t

$$$APPLET

Parabola, interakcia: krokovanie parametra t po 0.01 klavesami 1(+),2(-)