26
NURBS tˇ elesa NURBS tˇ elesa Teorie a programov´ e zpracov´ an´ ı Jana Proch´ azkov´ a Semin´ r SIGA, Praha 2011 8. ´ unora 2011

NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

NURBS telesaTeorie a programove zpracovanı

Jana Prochazkova

Seminar SIGA, Praha 2011

8. unora 2011

Page 2: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Obsah prednasky

Obsah prednasky

1 Teoreticky nahled na NURBS telesa.

2 Navrh programoveho zpracovanı.

3 Kriticka mısta metod.

4 Ukazky.

Page 3: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Teoreticky nahled na NURBS telesa

NURBS plocha

Mejme dano:sıt’ (q + 1)(r + 1) kontrolnıch bodu Pi,j , kde 0 ≤ i ≤ q, 0 ≤ j ≤ r,(q + 1)(r + 1) kladnych realnych cısel wi,j nazyvanych vahy,stupen plochy pro radky m a stupen plochy pro sloupce n,radkovy uzlovy vektor u = (u0, u1, . . . um+q+1),sloupcovy uzlovy vektor v = (v0, v1, . . . vn+r+1) .Pak plochu urcenou rovnicı

C (u, v) =

∑qi=0

∑rj=0 wijPijN

mi (u) Nn

j (v)∑qi=0

∑rj=0 Nm

i (u) Nnj (v)

, (1)

kde (u, v) ∈ 〈u0, um+q+1)× 〈v0, vn+r+1), nazyvame NURBSplochou.

Page 4: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Teoreticky nahled na NURBS telesa

Prıklady zakladnıch sıtı

Obrazek: Rıdicı body pro kuzel a valec, uzlove vektoryu = (0, 0, 0, 1

4 , 14 , 1

2 , 12 , 3

4 , 34 , 1, 1, 1), v = (0, 0, 0, 1

3 , 23 , 1, 1, 1)

Page 5: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Teoreticky nahled na NURBS telesa

Uzivatelske zadanı teles

valec, kuzel - stred podstavy, pod podstavy, vyska

hranol - 3 body

kulova plocha – stred, polomer

anuloid – osa, rotacnı kruznice

rotacnı telesa - rotacnı krivka, osa rotace

K telesum lze take zadat pocet rovnobezek (zhustenı sıte bodu) auhel rozevrenı telesa.

Page 6: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Navrh programoveho zpracovanı

Objektovy navrh

obecna NURBS plocha je v samostatne trıde

kazde teleso ma samostatnou trıdu jako potomek obecneNURBS plochy

kazda trıda obsahuje metodu spoctiParametry, ktera ze vstupuvygeneruje parametry nutne k vykreslenı plochy

vykreslenı – dedicnostı lze pouzıt vykreslovacı metodu zrodicovske trıdy

Page 7: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Algoritmus pro vypocet kontrolnıch bodu pro rozevrenatelesa

1 Rozdelit kruznicovy oblouk na stejne casti.

2 Vypocıtat trojice rıdicıch bodu pro jednotlive casti oblouku.

3 Urcit vahu prostrednıho bodu z kazde trojice.

Page 8: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Rıdicı body otevrenych teles

1. Rozdelit kruznicovy oblouk na stejne casti.

if (uhelRozevreni <= 90.0) pocetOblouku = 1;else

if (uhelRozevreni <= 180.0) pocetOblouku = 2;else

if (uhelRozevreni <= 270.0) pocetOblouku = 3;else pocetOblouku = 4;

Urcenı velikosti jednoho oblouku.uhel = uhelRozevreni/pocetOblouku;

Page 9: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Rıdicı body otevrenych teles

2. Vypocet rıdicıch bodu kruznicoveho oblouku.

@@

@@

@@

@@

��

��

��

��

P0 O

P1 P2

S

X

α

t0

t2r = |P0O|P x

2 = Ox + r cos α

P y2 = Oy + r sinα

P2 prusecık tecen t0, t2

Obrazek: Hledanı rıdicıch bodu kruznicoveho oblouku

Page 10: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı vahy prostrednıho rıdicıho bodu

3. Urcenı vahy prostrednıho rıdicıho bodu.Zakladnı rovnice kuzelosecky je dana tvarem

Ax2 + 2Hxy + By2 + 2Gx + 2Fy + C = 0, (2)

kde alespon jedno z A,B, H je nenulove.

V rovnici 2 vystupuje sest neznamych. Je-li C 6= 0, pak lze celourovnici vydelit C a pocet neznamych se snızı o jednu. Pro C = 0 jepredchozı uvaha splnena. Zakladnı rovnici lze prepsat do tvaru:

f : ax2 + 2hxy + by2 + 2gx + 2fy + 1 = 0 (3)

Je nutne najıt pet podmınek, ktere by jednoznacne urcilyparametry teto rovnice.

Page 11: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı vahy prostrednıho rıdicıho bodu

Podmınka 1+2Oblouk prochazı krajnımi body P0 = [x0, y0], P2 = [x2, y2], z cehozvyplyva tvar prvnıch dvou podmınek:

f(P0) = ax20 + 2hx0y0 + by2

0 + 2gx0 + 2fy0 + 1 = 0 (4)

f(P2) = ax22 + 2hx2y2 + by2

2 + 2gx2 + 2fy2 + 1 = 0 (5)

Page 12: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı vahy prostrednıho rıdicıho bodu

Podmınka 3+4 Podmınky dostavame porovnanım dvou vyjadrenısmernice tecen. Jedno zıskame z rovnice 3 jako podıl parcialnıchderivacı, druhe z podmınky, ze spojnice bodu P0P1 a P2P1 jsoutecnami v krajnıch bodech P0, P2.

y1 − y0

x1 − x0= −ax0 + hy0 + g

by0 + hx0 + f, (6)

y1 − y2

x1 − x2= −ax2 + hy2 + g

by2 + hx2 + f. (7)

Podmınka 5 Poslednı podmınka je urcena parametrickou rovnicivzhledem k zadanym hodnotam obecneho oblouku:

c(t) =(1− t2)P0 + 2t(1− t)w1P1 + t2P2

(1− t)2 + 2t(1− t)w1 + t2(8)

Page 13: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı vahy prostrednıho rıdicıho bodu

Bez ujmy na obecnosti vezmeme prıpad, kdy krajnı body lezı naose x soumerne podle pocatku, tedy P0 = −P2. Bod S je stredemsoustavy souradnic.Po upravach dostavame vyjadrenı pomeru:

|SX||SP1|

=w1

1 + w1. (9)

Page 14: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Rıdicı body otevrenych teles

Vypocet rıdicıch bodu kruznicoveho oblouku.

@@

@@

@@

@@

��

��

��

��

P0 O

P1 P2

S

X

α

t0

t2cos α

2 = |OS|r → |OS| = r cos α

2 .

cos α2 = r

|OP1| → |OP1| = rcos α

2

Obrazek: Odvozenı vahy prostrednıho bodu

Page 15: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı vahy prostrednıho rıdicıho bodu

|SX| = |OX| − |OS| = r − r cosα

2(10)

|SP1| = |OP1| − |OS| = r

cos α2

− r cosα

2=

r(1− cos2 α2 )

cos α2

.(11)

Hledany pomer je

|SX||SP1|

=r(1− cos α

2 )r(1− cos2 α

2 )/ cos α2

=cos α

2

1 + cos α2

=w1

1 + w1. (12)

Z toho vyplyva resenı:

w1 = cosα

2. (13)

Page 16: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Modelovanı hranolu

Zadanı: 3 body, pocet rovnobezek, pocet polednıku

urcit rıdicı body,

vypocıtat uzlove vektory v zavislosti na poctu rovnobezek apolednıku

Vypocet rıdicıch bodu:

posunX = (P[1].x - P[0].x) / (pocetPoledniku-1);posunY = (P[2].y - P[0].y) / (pocetPoledniku-1);

Page 17: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Vypocet rıdicıch bodu

-

6

s

s

s

s

(x1, y1) (x1 + posunX, y1) (x2, y1)

(x2, y1 + posunY)

(x2, y2)(x2 − posunX, y2)(x1, y2)

(x1, y2 − posunY)s ss

s

Obrazek: Vypocet rıdicıch bodu pro tri polednıky

Page 18: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı uzlovych vektoru

s

s

s

s

0, 0, 0 0.25, 0.25

0.5, 0.50.75, 0.75

1, 1, 1-

6

?

Obrazek: Zakladnı uzlovy vektor pro hranol

Page 19: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı uzlovych vektoru

s

s

s

ss s

s

s

0.875 0.375

0.125

0.625

0, 0, 0 0.25, 0.25

0.5, 0.50.75, 0.75

1, 1, 1-r

6

?

Obrazek: Generovanı uzloveho vektoru pro tri polednıky

Page 20: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Urcenı uzlovych vektoru

Obecne dostavame radkovy uzlovy vektor:

0, 0, . . . , 0,︸ ︷︷ ︸degree1+1

pocetVnitrnichUzlu︷ ︸︸ ︷. . . . . . 0.25, . . . , 0.25,︸ ︷︷ ︸degree1

pocetVnitrnichUzlu︷ ︸︸ ︷. . . . . .

0.5, . . . , 0.5,︸ ︷︷ ︸degree1

pocetVnitrnichUzlu︷ ︸︸ ︷. . . . . . 0.75, . . . , 0.75,︸ ︷︷ ︸degree1

pocetVnitrnichUzlu︷ ︸︸ ︷. . . . . . 1.0, . . . , 1.0︸ ︷︷ ︸degree1+1

Sloupcovy uzlovy vektor:

0, 0, . . . , 0,︸ ︷︷ ︸degree2+1

sloupec-degree2︷ ︸︸ ︷. . . . . . 1.0, . . . , 1.0,︸ ︷︷ ︸degree2+1

Page 21: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Kriticka mısta metod

Kriticka mısta programu

Testovanı vstupu

spravne rozsahy vstupnıch hodnotomezenı pro pocet rovnobezek a polednıku, uhlu rozevrenıtelesaspravne umıstenı bodu (jsou ruzne, nevzniknou degenerovanatelesa)

Geometricke vypocetnı metody – prusecık prımky s rovinou,prusecık dvou prımek v prostoru

Page 22: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Ukazky

Zakladnı telesa a jejich modifikace

Page 23: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Ukazky

Zakladnı telesa a jejich modifikace

Page 24: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Ukazky

Zakladnı telesa a jejich modifikace

Page 25: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Ukazky

Software RFEM 4.0

Page 26: NURBS telesa - Teorie a programové zpracování · NURBS tˇelesa Obsah pˇredn´aˇsky Obsah pˇredn´aˇsky 1 Teoretick´y n´ahled na NURBS tˇelesa. 2 N´avrh programov´eho

NURBS telesa

Ukazky

Dekuji za pozornost