geometriai modellezés szirmay-kalos lászló. virtuális világ létrehozása l geometria –2d:...

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

Upload: dillon-flores

Post on 01-Apr-2015

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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,

Geometriai modellezésGeometriai modellezés

Szirmay-Kalos László

Page 2: 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,

Virtuális világ létrehozásaVirtuális világ létrehozása

Geometria– 2D: pont, síkgörbe, terület, fraktál (D2)– 3D: pont, térgörbe, felület, test, fraktál (D3)

Transzformáció (mozgatás) Optikai tulajdonságok

Page 3: 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,

GörbékGörbék: : 1D ponthalmazok1D ponthalmazokA pontok koordinátái kielégítenek egy egyenletet:

– implicit: f(x, y) = 0 f(r) = 0 2D egyenes: ax + by + c = 0 Kör: (x–x0)2+(y–y0)2–R2 = 0 |r – r0 |2 – R2 = 0

– parametrikus: x = x(t), y = y(t) r = r(t) 3D egyenes:

Kör: t [0,1]

x(t) = x0 + R cos 2t r = r0 + R(cos 2t, sin 2t) y(t) = y0 + R sin 2t

– explicit: y = F(x) 2D egyenes: y = mx + b

n(r – r0) = 0

r = r0 + v t, t [-∞,∞]x = x0 + vx ty = y0 + vy tz = z0 + vz t

Page 4: 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,

Szabadformájú görbékSzabadformájú görbék Definíció vezérlőpontokkal

Polinom: x(t) = ai ti, y(t) = bi ti

Polinom együtthatók:– Interpoláció– Approximáció

Page 5: 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,

Lagrange Lagrange interpolációinterpoláció

Vezérlő pontok: r1, r2, r3,..., rn

Keresd: r(t) = [ai, bi ] ti amelyre

r(t1) = r1, r(t2) = r2, … , r(tn) = rn,

Megoldás:

– r(t) = Li(t) ri

Li(t) = j i (t-tj)

j i (ti-tj)Li(tk) =

1 if i=k

0 egyébként

r(tk) = rk

r1

r2

rn

t1 t2 tn

r(t) ?

Page 6: 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,

LagrangeLagrangeCurveCurveclass LagrangeCurve { vector<Vector> cps; // control points vector<float> 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 bettercps.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; }};

Page 7: 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,

Lagrange interpoláció Lagrange interpoláció bázisfüggvényeibázisfüggvényei

r(t) = Li(t) riLi(t) = j i (t-tj)

j i (ti-tj)

0

1

1

0.33 0.67

Page 8: 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,

Lagrange interpoláció Lagrange interpoláció problémáiproblémái

Page 9: 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,

Hermite interpHermite interpolációoláció

r(t) = a3(t-ti)3+a2(t-ti)2+a1(t-ti)+a0

ri’(t) = 3a3(t-ti)2+2a2(t-ti)+a1

r(ti) = a0 = pi

r(ti+1) = a3(ti+1-ti)3+a2(ti+1-ti)2+a1(ti+1-ti)+a0 = pi+1

r’(ti) = a1 = vi

r’(ti+1) = 3a3(ti+1-ti)2+2a2(ti+1-ti)+a1 = vi+1

pi

=r’(ti)

=r ’(ti+1)

=r(ti+1)ti

ti+1 pi+1

a0= pi

a1= vi

a2 = -

a3 = +

3(pi+1 - pi)(ti+1- ti)2

vi+1+2vi

(ti+1- ti)2(pi - pi+1)(ti+1- ti)3

vi+1+vi

(ti+1- ti)2

=r(ti)

vi

vi+1

Page 10: 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,

Bezier approximációBezier approximáció

Keresd: r(t) = Bi(t) ri

– Bi(t): ne oszcilláljon

– Konvex burok tulajdonság

– Bi(t) 0, Bi(t) = 1

r2

r0

r1r3

B0(t) B1(t)B2(t)

B3(t)

r(t)

Page 11: 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,

1n = (t+(1-t))n = t i (1-t)n-ini( )

Bi(t)

Bernstein polBernstein polinomokinomok

i=0

n

Bi(t) 0, Bi(t) = 1: OK

Newton féle binomiális tétel

Page 12: 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,

Bezier approximBezier approximációáció

Bi(t) = t i (1-t)n-i( )n

ir(t) = Bi(t) ri

0

1

1

n = 3

Page 13: 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,

BezierCurveBezierCurve

class BezierCurve { vector<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; }};

Page 14: 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,

Catmull-Rom splineCatmull-Rom spline

t0 ti-1 ti ti+1 tn

r0

ri-1

ri

ri+1

rn

vi =12

ri+1 - ri

ti+1 - ti

ri - ri-1

ti - ti-1+

vi

Egy görbeszegmens: Hermite interpolációLegeslegelső és legutolsó sebesség explicite

vi+1

Minden két vezérlőpont közé egy görbe szegmensSimaság: a sebesség is legyen közös két egymásutánira

Page 15: 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,
Page 16: 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,

FelületekFelületek Felület a 3D tér 2D részhalmaza:

– Koordináták kielégítenek egy egyenletet– implicit: f(x, y, z) = 0

gömb: (x - x0)2 + (y - y0)2 + (z - z0)2 - R2 = 0

– parametrikus: x = x(u,v), y = y(u,v), z = z(u,v),

u,v [0,1] gömb x = x0 + R cos 2u sin v

y = y0 + R sin 2u sin v z = z0 + R cos v

u,v [0,1]

– explicit (magasságmező):

z = h(x,y)

Page 17: 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,

Szabadformájú görbékSzabadformájú görbék: : rr((u,vu,v)) Definíció vezérlőpontokkal

r(u,v) = rv(u) = Bi (u) ri (v)

ri (v) = Bj(v) ri,j

r(u,v) = Bi (u) Bj(v) ri,j

Page 18: 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,

Szabadformájú felületekSzabadformájú felületek Vezérlő háló:

r(u,v) = Bi,j (u,v) ri, j

= Bi(u) Bj(v) ri, j

Page 19: 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,

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

Page 20: 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,

Poligonháló finomításaPoligonháló finomítása

Page 21: 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,

Subdivision görbékSubdivision görbék

= 1/2 + 1/4

Page 22: 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,

Catmull-ClarkCatmull-Clark subdivision felületsubdivision felület

= 1/4i = 1/2

= 1/v2 +2/v2 +(v-3)/vi

= 1/4 + 1/2 i

Page 23: 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,

Durva poligon modellDurva poligon modell

Page 24: 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,

Subdivision: 1. szintSubdivision: 1. szint

Page 25: 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,

Subdivision: 2. szintSubdivision: 2. szint

Page 26: 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,

TestekTestek

Ellenpéldák

Érvényes test: – Nem lehet alacsonyabb dimenziójú elfajulás

Érvényes testet eredményező módszerek– 2.5 dimenziós eljárások

– B-rep

– Constructive Solid Geometry

Page 27: 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,

B-repB-rep

Test = határoló felületek

Topológiai érvényesség (Euler tétel ha egy darabból áll és nincsenek benne lyukak) :

csúcsok + lapok= élek + 2

Page 28: 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,

Euler operátorokEuler operátorok Lap kihúzás

Lap felvágás

Él törlés Csúcs szétvágás

Page 29: 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,

Kezdeti testKezdeti test

Page 30: 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,

Lap kihúzásLap kihúzás

Page 31: 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,

Lap kihúzásLap kihúzás

Page 32: 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,

Még egyMég egy

Page 33: 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,

Még mindigMég mindig

Page 34: 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,

Subdivision simításSubdivision simítás