![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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/1.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/2.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/3.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/4.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/5.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/6.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/7.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/8.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/9.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/10.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/11.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/12.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/13.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/14.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/15.jpg)
![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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/16.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/17.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/18.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/19.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/20.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/21.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/22.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/23.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/24.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/25.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/26.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/27.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/28.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/29.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/30.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/31.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/32.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/33.jpg)
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,](https://reader035.vdocuments.site/reader035/viewer/2022062404/551b1d4b5503462e578b6124/html5/thumbnails/34.jpg)
Subdivision simításSubdivision simítás