Implicitna kriva

300px|thumb| Cassinijevi ovali: 
(1) a=1.1, c=1 (iznad), 
(2) a=c=1 (sredina),
(3) a=1, c=1,05 (ispod)
300px|thumb|Implicitna kriva: \sin(x+y)-\cos(xy)+1=0
[thumb|450px|Implicitna kriva \sin(x+y)-\cos(xy)+1=0 kao [kriva nivoa|krive nivoa površine z=\sin(x+y)-\cos(xy)+1]]
 
U matematici, **implicitna kriva** je ravanska kriva definirana implicitnom jednadžbom koja povezuje dvije koordinatne varijable, obično *x* i *y* . Naprimjer, jedinični krug je definiran implicitnom jednadžbom x^2+y^2=1. Općenito, svaka implicitna kriva je definirana jednadžbom oblika: F(x,y)=0
za neku funkciju *F* od dvije varijable. Stoga se implicitna kriva može smatrati skupom nula funkcije dvije varijable. *Implicitno* znači da jednačina nije izražena kao rješenje ni za *x* u terminima *y* ili obrnuto.
 
Ako je F(x,y) polinom u dvije varijable, odgovarajuća kriva se naziva *algebarska kriva*, a za proučavanje su dostupne specifični metodi.
 
Ravne krive se mogu predstaviti u Kartezijanskim koordinatama (*x*, *y* koordinate) bilo kojim od tri metoda, od kojih je jedna implicitna jednačina data gore. Grafikon funkcije se obično opisuje jednadžbom y=f(x) u kojoj je eksplicitno naveden funkcionalni oblik; ovo se zove "eksplicitna" reprezentacija. Treći osnovni opis krive je *parametrijska*, gdje su *x*- i *y*-koordinate tačaka krive predstavljene sa
dvije funkcije  čije su obje funkcionalne forme eksplicitno navedene i koje zavise od zajedničkog parametra t.
 
Primjeri implicitnih krivulja uključuju:
# pravu: x+2y-3=0 ,
#krug: x^2+y^2-4=0 ,
# polukubna parabola:x^3-y^2=0 ,
# Cassinijeve ovale (x^2+y^2)^2-2c^2(x^2-y^2)-(a^4-c^4)=0  (vidi dijagram),
# \sin(x+y)-\cos(xy)+1=0 (vidi dijagram).
Prva četiri primjera su algebarske krive, ali posljednji nije algebarski. Prva tri primjera posjeduju jednostavne parametarske reprezentacije, što nije tačno za četvrti i peti primjer. Peti primjer pokazuje eventualno komplikovanu geometrijsku strukturu implicitne krive.
 
Teorema o implicitnoj funkciji opisuje uslove pod kojima se jednadžba F(x,y)=0 može *riješiti implicitno* za *x* i/ili ''y' ' – odnosno pod kojim se može valjano pisati x=g(y) or y=f(x). Ova teorema je ključ za izračunavanje bitnih geometrijskih karakteristika krive: tangentas, normale i zakrivljenost. U praksi implicitne krive imaju suštinski nedostatak: njihova vizualizacija je teška. Ali postoje kompjuterski programi koji omogućavaju prikaz implicitne krive. Posebna svojstva implicitnih krivulja čine ih osnovnim alatima u geometriji i kompjuterskoj grafici.
 
Implicitna kriva sa jednadžbom F(x,y)=0 može se smatrati kao krivulja nivoa nivoa 0 površine z=F(x,y) (vidi treći dijagram).
 
## Nagib i zakrivljenost 
Općenito, implicitne krive ne ispunjavaju test vertikalne linije (što znači da su neke vrijednosti *x* povezane s više od jedne vrijednosti *y*) i stoga nisu nužno grafovi funkcija. Međutim, teorem o implicitnoj funkciji daje uslove pod kojima je implicitna kriva "lokalno" data grafom funkcije (tako da posebno nema samopresecanja). Ako su relacije definiranja dovoljno glatke, onda u takvim područjima implicitne krive imaju dobro definirane nagibe, tangente, vektore normale i zakrivljenost.
 
Postoji nekoliko mogućih načina za izračunavanje ovih veličina za datu implicitnu krivu. Jedan je korištenje implicitne diferencijacije za izračunavanje izvedenica od *y* u odnosu na *x*. Alternativno, za krivu koju definiše implicitna jednadžba F(x,y)=0, ove formule se mogu izraziti direktno u terminima djelimičnih derivata od F. U nastavku se označavaju parcijalne derivacije F_x (za derivaciju u odnosu na *x*), F_y, F_{xx} (za drugi parcijal u odnosu na *x*), F_{xy} (za mešoviti drugi parcijal), F_{yy}.
 
### Tangentni i normalni vektor 
Tačka krive (x_0, y_0) je *regularna* ako su prvi parcijalni derivati F_x(x_0,y_0) i F_y(x_0,y_0) nisu oba jednaka 0.
 
Jednačina tangentne prave u regularnoj tački (x_0,y_0) je
:F_x(x_0,y_0)(x-x_0)+F_y(x_0,y_0)(y-y_0)=0,
 
pa je nagib tangentne linije, a samim tim i nagib krive u toj tački:\text{slope} =-\frac{F_x(x_0,y_0)}{F_y(x_0,y_0)}.
 
Ako jeF_y(x,y)=0 \ne F_x(x,y) na (x_0,y_0), kriva okomita u toj tački, dok ako su obje F_y(x,y)=0 i F_x(x,y)=0 u toj tački tada se kriva tamo ne može razlikovati, već je umjesto toga singularna tačka – ili vrvica ili tačka u kojoj se kriva siječe.
Normalni vektor na krivu u tački je dat sa: \mathbf{n}(x_0,y_0) = (F_x(x_0,y_0), F_y(x_0,y_0))
(ovdje napisano kao vektor reda).
 
### Zakrivljenost 
Radi čitljivosti formula, argumenti (x_0,y_0) su izostavljeni. Zakrivljenost \kappa u regularnoj tački je data formulom:\kappa = \frac{-F_y^2F_{xx}+2F_xF_yF_{xy}-F_x^2F_{yy}}{(F_x^2+F_y^2)^{3/2}}.
 
### Izvođenje formula 
Teorema o implicitnoj funkciji jamči unutar susjedstva tačke (x_0,y_0) postojanje funkcije f takve da F(x,f(x)) =0.
Po pravilu lanca, derivati funkcije f su:  f'(x)=-\frac{F_x(x,f(x))}{F_y(x,f(x))} and  f''(x)=\frac{-F_y^2F_{xx}+2F_xF_yF_{xy}-F_x^2F_{yy}}{F_y^3}
(gde su argumenti (x, f(x)) na desnoj strani druge formule izostavljeni radi lakšeg čitanja).
 
Umetanje izvoda funkcije f u formule za tangentu i zakrivljenost grafikona eksplicitne jednačine  y = f(x)  daje:  y=f(x_0)+f'(x_0)(x-x_0) (tangenta)
:  \kappa(x_0)=\frac{f''(x_0)}{(1+f'(x_0)^2)^{3/2}} (zakrivljenost).
 
## Prednosti i nedostaci implicitnih krivulja 
### Nedostatak 
Suštinski nedostatak implicitne krive je nedostatak lahke mogućnosti izračunavanja pojedinačnih tačaka koje su neophodne za vizualizaciju implicitne krive (vidi sljedeći odjeljak).
 
### Prednosti 
#Implicitne reprezentacije olakšavaju izračunavanje tačaka preseka: ako je jedna kriva predstavljena implicitno, a druga parametarski, za izračunavanje tačaka presjeka potrebna je samo jednostavna (1-dimenzijska) Newtonova iteracija, što je suprotno slučajevima *implicitno-implicitno* i *parametarski-parametarski* (pogledajte Presjek).
#Implicitna reprezentacija F(x,y)=0 daje mogućnost odvajanja tačaka koje nisu na krivulji znakom F(x,y). Ovo može biti od pomoći, naprimjer, primjena metoda lažne pozicije umjesto Newtonove iteracije.
#Lahko je generirati krive koje su skoro geometrijski slične datoj implicitnoj krivulji F(x,y)=0, samo dodavanjem malog broja: F(x,y)-c=0 (pogledajte odjeljak #Glatke aproksimacije).
 
## Primjene implicitnih krivulja 
Unutar matematike implicitne krive igraju istaknutu ulogu kao algebarske krive.
Osim toga, implicitne krive se koriste za dizajniranje krivulja željenih geometrijskih oblika. Evo dva primjera.
 
### Glatke aproksimacije 
#### Konveksni poligoni
Glatka aproksimacija konveksnog poligona može se postići na sljedeći način: Neka g_i(x,y)=a_ix+b_iy+c_i=0, \ i=1,\dotsc,n su jednadžbe linija koje sadrže rubove poligona tako da je za unutrašnju tačku poligona g_i pozitivan. Zatim podskup implicitne krive:F(x,y)=g_1(x,y)\cdots g_n(x,y)-c=0
sa odgovarajućim malim parametrom c je glatka (diferencijabilna) aproksimacija poligona.
Naprimjer, krive:F(x,y)=(x+1)(-x+1)y(-x-y+2)(x-y+2)-c=0  za c= 0.03,\dotsc, 0.6
sadrže glatke aproksimacije poligona sa 5 ivica (vidi dijagram).
 
#### Parovi linija
U slučaju dva reda:F(x,y)=g_1(x,y)g_2(x,y)-c=0
dobija se
:olovka *paralelnih linija*, ako su date prave paralelne ili
: olovka hiperbola, koje imaju date linije kao asimptote.
Naprimjer, proizvod varijabli koordinatnih osa daje olovku hiperbola xy-c=0, \ c\ne 0, koje imaju koordinatne ose kao asimptote.
 
#### Ostale
Ako se krene s jednostavnim implicitnim krivuljama koje nisu prave (krugovi, parabole,...) dobija se širok raspon zanimljivih novih krivulja. Naprimjer,
:F(x,y)=y(-x^2-y^2+1)-c=0
(proizvod kruga i x-ose) daje glatke aproksimacije jedne polovine kruga (vidi sliku), i:F(x,y)=(-x^2-(y+1)^2+4)(-x^2-(y-1)^2+4)-c=0
(proizvod dva kruga) daje glatke aproksimacije presjeka dva kruga (vidi dijagram).
 
### Krive miješanja 
U CAD se koriste implicitne krive za generiranje krivulja miješanjes, koje su posebne krive uspostavljanjah glatki prijelaza između dvije date krive. Naprimjer,: F(x,y)=(1-\mu)f_1f_2-\mu (g_1g_2)^3 =0 
generira krivulje miješanja između dva kruga
:f_1(x,y)=(x-x_1)^2+y^2-r_1^2=0 ,
:f_2(x,y)=(x-x_2)^2+y^2-r_2^2=0 .
Metod garantuje kontinuitet tangenti i zakrivljenosti u tačkama dodira (vidi dijagram). Dvije prave:g_1(x,y)=x-x_1=0 ,\ g_2(x,y)=x-x_2=0
određuje dodirne tačke na krugovima. Parametar \mu je parametar dizajna. U dijagramu, \mu= 0.05, \dotsc, 0.2 .
 
### Ekvipotencijalne krive dva tačkasta naelektrisanja 
Ekvipotencijalna krivas od dva jednaka tačkasta naboja u tačkama P_1=(1,0), \; P_2=(-1,0) može se predstaviti jednadžbom:f(x,y)=\frac{1}+\frac{1}-c
:::            =\frac{1}{\sqrt{(x-1)^2+y^2}}+\frac{1}{\sqrt{(x+1)^2+y^2}}-c=0 .
Krive su slične Cassinijevim ovalima, ali nisu takve krive.
 
## Vizualizacija implicitne krive 
Za vizualizaciju implicitne krive obično se određuje poligon na krivulji i prikazuje se poligon. Za parametarsku krivu ovo je lak zadatak: samo se izračunavaju tačke niza parametarskih vrijednosti. Za implicitnu krivu potrebno je riješiti dva podproblema:
# određivanje prve tačke krivulje do date početne tačke u blizini krive,
# određivanje tačke krivulje počevši od poznate tačke krivulje. U oba slučaja razumno je pretpostaviti \operatorname{grad} F \ne (0,0). U praksi je ova pretpostavka narušena samo u pojedinačnim izolovanim tačkama.
 
### Tačkasti algoritam 
Za rješavanje oba gore navedena zadatka neophodno je imati kompjuterski program (koji ćemo nazvati \mathsf{CPoint}), koji kada mu je data tačka Q_0=(x_0,y_0 ) blizu implicitne krive, pronalazi tačku P koja je tačno na krivulji:
:**(P1)** jer je početna tačka j=0
:**(P2)** **ponavljanje**
::(x_{j+1},y_{j+1})= (x_j,y_j)- \frac{F(x_j,y_j)}{F_x(x_j,y_j)^2+F_y(x_j,y_j)^2}\, \left( F_x(x_j,y_j),F_y(x_j,y_j)\right)  
:::(Njutnov korak za funkciju g(t)=F\left(x_j+tF_x(x_j,y_j),y_j+tF_y(x_j,y_j)\right) \ . )
:**(P3)** **sve dok** razmak između tačaka (x_{j+1},y_{j+1}),\, (x_j,y_j) nije dovoljno mali.
:**(P4)** P=(x_{j+1},y_{j+1}) je tačka krive blizu početne tačke Q_0 .
 
### Algoritam praćenja 
Da bi se generirao gotovo jednako raspoređen poligon na implicitnoj krivulji, bira se dužina koraka  s i
:**(T1)**' bira odgovarajuću početnu tačku u blizini krivulje
:**(T2)** određuje prvu tačku krive P_1 koristeći program \mathsf{CPoint}
:**(T3)** određuje tangentu (vidi gore), bira početnu tačku na tangenti koristeći dužinu koraka s (vidi dijagram) i određuje drugu tačku krivulje P_2  pomoću programa \mathsf{CPoint} .
 
Budući da algoritam prati implicitnu krivu, naziva se „algoritam praćenja“.
Algoritam prati samo povezane dijelove krive. Ako se implicitna kriva sastoji od nekoliko dijelova, mora se pokrenuti nekoliko puta s odgovarajućim polaznim tačkama.

 
### Raster algoritam 
Ako se implicitna kriva sastoji od nekoliko ili čak nepoznatih dijelova, možda bi bilo bolje koristiti rasterizacija algoritam. Umjesto da tačno prati krivu, rasterski algoritam pokriva cijelu krivu u toliko tačaka da se one stapaju i izgledaju kao kriva.
 
:**(R1)**' Generiranje mreže tačaka (raster) na području od interesa x-y ravni.
:**(R2)** Za svaku tačku P u rasteru, pokrene se algoritam tačaka \mathsf{CPoint} počevši od P, a zatim označava njegov izlaz.
 
Ako je mreža dovoljno gusta, rezultat aproksimira povezane dijelove implicitne krive. Ako su za dalje primjene potrebni poligoni na krivuljama, mogu se pratiti dijelovi od interesa pomoću algoritma praćenja.
 
## Implicitne prostorne krive 
Bilo koja prostorna kriva koja je definirana s dvije jednačine
:\begin{matrix}
F(x,y,z)=0, \\
G(x,y,z)=0 \end{matrix} 
naziva se *implicitna prostorna kriva*. Tačka krivulje (x_0,y_0,z_0) naziva se *regularna* ako je unakrsni proizvod nagiba F i G nije (0,0,0) u ovom trenutku:
:\mathbf t(x_0,y_0,z_0)=\operatorname{grad}F(x_0,y_0,z_0)\times \operatorname{grad}G(x_0,y_0,z_0)\ne (0,0, 0);
inače se naziva *jednina*. Vektor \mathbf t(x_0,y_0,z_0) je *tangentni vektor* krive u tački (x_0,y_0,z_0).

*Primjeri:*
 
 (1)\quad x+y+z-1=0 \ ,\ x-y+z-2=0 
:: je prava.
(2)\quad x^2+y^2+z^2-4=0 \ , \ x+y+z-1=0 
:: je ravan presjeka sfere, dakle krug.
 (3)\quad x^2+y^2-1=0 \ , \ x+y+z-1=0 
:: je elipsa (ravan presjek cilindra).(4)\quad x^2+y^2+z^2-16=0 \ ,\ (y-y_0)^2+z^2-9=0 
:: je presečna kriva između kugle i cilindra.
 
Za izračunavanje tačaka krive i vizualizaciju implicitne prostorne krive pogledajte Presjek.
 
## Također pogledajte
* Implicitna površina
 
## Reference
* Gomes, A., Voiculescu, I., Jorge, J., Wyvill, B., Galbraith, C.: *Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms*, 2009, Springer-Verlag London, 
*C:L: Bajaj, C.M. Hoffmann, R.E. Lynch: *Tracing surface intersections*, Comp. Aided Geom. Design 5 (1988), 285-307.
 
## Vanjski linkovi 
*Famous Curves
**Geometry and Algorithms for COMPUTER AIDED DESIGN*

Kategorija:Krive
Kategorija:Računarski dizajn