Presentation is loading. Please wait.

Presentation is loading. Please wait.

Geometriai modellezés Szirmay-Kalos László. Virtuális világ létrehozása l Geometria –2D: pont, síkgörbe, terület, fraktál (D  2) –3D: pont, térgörbe,

Similar presentations


Presentation on theme: "Geometriai modellezés Szirmay-Kalos László. Virtuális világ létrehozása l Geometria –2D: pont, síkgörbe, terület, fraktál (D  2) –3D: pont, térgörbe,"— Presentation transcript:

1 Geometriai modellezés Szirmay-Kalos László

2 Virtuális világ létrehozása l Geometria –2D: pont, síkgörbe, terület, fraktál (D  2) –3D: pont, térgörbe, felület, test, fraktál (D  3) l Transzformáció (mozgatás) l Optikai tulajdonságok

3 Görbék: 1D ponthalmazok A pontok koordinátái kielégítenek egy egyenletet: –implicit: f(x, y) = 0 f(r) = 0 l 2D egyenes: ax + by + c = 0 l Kör: (x–x 0 ) 2 +(y–y 0 ) 2 –R 2 = 0 |r – r 0 | 2 – R 2 = 0 –parametrikus: x = x(t), y = y(t) r = r(t) l 3D egyenes: Kör: t  [0,1] x(t) = x 0 + R cos 2  tr = r 0 + R(cos 2  t, sin 2  t) y(t) = y 0 + R sin 2  t –explicit:y = F(x) l 2D egyenes: y = mx + b n  (r – r 0 ) = 0 r = r 0 + v t, t  [-∞,∞] x = x 0 + v x t y = y 0 + v y t z = z 0 + v z t

4 Szabadformájú görbék l Definíció vezérlőpontokkal Polinom: x(t) =  a i t i, y(t) =  b i t i l Polinom együtthatók: –Interpoláció – Approximáció

5 Lagrange interpoláció l Vezérlő pontok: r 1, r 2, r 3,..., r n Keresd: r(t) =  [a i, b i ] t i amelyre r(t 1 ) = r 1, r(t 2 ) = r 2, …, r(t n ) = r n, l Megoldás: – r(t) =  L i (t) r i L i (t) =  j  i ( t-t j )  j  i ( t i -t j ) L i (t k ) = 1 if i=k 0 egyébként r(t k ) = r k r1r1 r2r2 rnrn t1t1 t2t2 tntn r(t) ?

6 LagrangeCurve class LagrangeCurve { vector cps;// control points vector ts;// parameter (knot) values float L(int i, float t) { float Li = 1.0f; for(int j = 0; j < cps.size(); j++) if (j != i) Li *= (t – ts[j])/(ts[i] – ts[j]); return Li; } public: void AddControlPoint(Vector cp) { float ti = cps.size(); // or something better cps.push_back(cp); ts.push_back(ti); } Vector r(float t) { Vector rr(0, 0, 0); for(int i = 0; i < cps.size(); i++) rr += cps[i] * L(i,t); return rr; } };

7 Lagrange interpoláció bázisfüggvényei r(t) =  L i (t) r i L i (t) =  j  i ( t-t j )  j  i ( t i -t j )

8 Lagrange interpoláció problémái

9 Hermite interpoláció l r(t) = a 3 (t-t i ) 3 +a 2 (t-t i ) 2 +a 1 (t-t i )+a 0 l r i ’(t) = 3a 3 (t-t i ) 2 +2a 2 (t-t i )+a 1 r(t i ) = a 0 = p i r(t i+1 ) = a 3 (t i+1 -t i ) 3 +a 2 (t i+1 -t i ) 2 +a 1 (t i+1 -t i )+a 0 = p i+1 r’(t i ) = a 1 = v i r’(t i+1 ) = 3a 3 (t i+1 -t i ) 2 +2a 2 (t i+1 -t i )+a 1 = v i+1 pipi =r’(t i ) =r ’(t i+1 ) =r(t i+1 ) titi t i+1 p i+1 a 0 = p i a 1 = v i a 2 = - a 3 = + 3(p i+1 - p i ) (t i+1 - t i ) 2 v i+1 +2v i (t i+1 - t i ) 2(p i - p i+1 ) (t i+1 - t i ) 3 v i+1 +v i (t i+1 - t i ) 2 =r(ti)=r(ti) vivi v i+1

10 Bezier approximáció Keresd: r(t) =  B i (t) r i –B i (t): ne oszcilláljon –Konvex burok tulajdonság –B i (t)  0,  B i (t) = 1 r2r2 r0r0 r1r1 r3r3 B0(t)B0(t) B1(t)B1(t) B2(t)B2(t) B3(t)B3(t) r(t)r(t)

11 1 n = (t+(1-t)) n =   t i ( 1-t) n-i n i ( )( ) Bi(t)Bi(t) Bernstein polinomok i=0 n B i (t)  0,  B i (t) = 1: OK Newton féle binomiális tétel

12 Bezier approximáció B i (t) = t i ( 1-t) n-i ( )( ) n i r(t) =  B i (t) r i n = 3

13 BezierCurve class BezierCurve { vector cps;// control points float B(int i, float t) { int n = p.size()-1; // n deg polynomial = n+1 pts! float choose = 1; for(int j = 1; j <= i; j++) choose *= (float)(n-j+1)/j; return choose * pow(t, i) * pow(1-t, np-i); } public: void AddControlPoint(Vector cp) { cps.push_back(cp); } Vector r(float t) { Vector rr(0, 0); for(int i = 0; i < cps.size(); i++) rr += cps[i] * B(i,t); return rr; } };

14 Catmull-Rom spline t0t0 t i-1 titi t i+1 tntn r0r0 r i-1 riri r i+1 rnrn v i = 1212 r i+1 - r i t i+1 - t i r i - r i-1 t i - t i-1 + vivi Egy görbeszegmens: Hermite interpoláció Legeslegelső és legutolsó sebesség explicite v i+1 Minden két vezérlőpont közé egy görbe szegmens Simaság: a sebesség is legyen közös két egymásutánira

15

16 Felületek l Felület a 3D tér 2D részhalmaza: –Koordináták kielégítenek egy egyenletet –implicit: f(x, y, z) = 0 l gömb:(x - x0) 2 + (y - y0) 2 + (z - z0) 2 - R 2 = 0 –parametrikus: x = x(u,v), y = y(u,v), z = z(u,v), u,v  [0,1] gömbx = x0 + R cos 2  u sin  v y = y0 + R sin 2  u sin  v z = z0 + R cos  v u,v  [0,1] –explicit (magasságmező): z = h(x,y)

17 Szabadformájú görbék: r(u,v) l Definíció vezérlőpontokkal r(u,v) = r v (u) =  B i (u) r i (v) r i (v) =  B j (v) r i,j r(u,v) =   B i (u) B j (v) r i,j

18 Szabadformájú felületek l Vezérlő háló: r(u,v) =   B i,j (u,v) r i, j =   B i (u) B j (v) r i, j

19 Vezérlőpontok módosítása

20 Poligonháló finomítása

21 Subdivision görbék = 1/2 + 1/4 

22 Catmull-Clark subdivision felület = 1/4  i = 1/2  = 1/v 2  +2/v 2  +(v-3)/v i = 1/4  + 1/2 i

23 Durva poligon modell

24 Subdivision: 1. szint

25 Subdivision: 2. szint

26 Testek l Ellenpéldák l Érvényes test: –Nem lehet alacsonyabb dimenziójú elfajulás l Érvényes testet eredményező módszerek –2.5 dimenziós eljárások –B-rep –Constructive Solid Geometry

27 B-rep l Test = határoló felületek l Topológiai érvényesség (Euler tétel ha egy darabból áll és nincsenek benne lyukak) : csúcsok + lapok= élek + 2

28 Euler operátorok l Lap kihúzás l Lap felvágás l Él törlés l Csúcs szétvágás

29 Kezdeti test

30 Lap kihúzás

31

32 Még egy

33 Még mindig

34 Subdivision simítás


Download ppt "Geometriai modellezés Szirmay-Kalos László. Virtuális világ létrehozása l Geometria –2D: pont, síkgörbe, terület, fraktál (D  2) –3D: pont, térgörbe,"

Similar presentations


Ads by Google