computação gráfica: aula2: curvas e superfícies psergio [email protected]

42
Computação Gráfica: Aula2: Curvas e Superfícies http://www.fei.edu.br/ ~psergio [email protected]

Upload: internet

Post on 17-Apr-2015

113 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Computação Gráfica: Aula2: Curvas e Superfícies

http://www.fei.edu.br/~psergio

[email protected]

Page 2: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies

As Curvas de Hermite

))(),(),(()2,1,2,1,()( tzyytxTTPPtftP

P2

P1

T2

T1

10 t

Page 3: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

)2,1,2,1( TTPPP

zzzzz

yyyyy

xxxxx

dtctbtaPtz

dtctbtaPty

dtctbtaPtx

23

23

23

)(

)(

)(

Page 4: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

zzzzz

yyyyy

xxxxx

dtctbtaPtz

dtctbtaPty

dtctbtaPtx

23

23

23

)(

)(

)(

zzzzz

yyyyy

xxxxx

Tdcbattttz

Tdcbatttty

Tdcbattttx

] ][1 [)(

] ][1 [)(

] ][1 [)(

23

23

23

Page 5: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

))0(),0(),0(()1,1,1(1 zyxPPPP zyx

zzzzzz

yyyyyy

xxxxxx

ddcbaPz

ddcbaPy

ddcbaPx

0001)0(

0001)0(

0001)0(

23

23

23

),,()1,1,1(1 zyxzyx dddPPPP

Page 6: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

))1(),1(),1(()2,2,2(2 zyxPPPP zyx

zzzzzz

yyyyyy

xxxxxx

ddcbaPz

ddcbaPy

ddcbaPx

1112)1(

1112)1(

1112)1(

23

23

23

) , ,(

)2,2,2(2

zzzzyyyyxxxx

zyx

dcbadcbadcba

PPPP

Page 7: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

zzzzz

yyyyy

xxxxx

ddcbaz

ddcbay

ddcbax

P

] ][1 0 0 0[)0(

] ][1 0 0 0[)0(

] ][1 0 0 0[)0(

1

zzzzzzzz

yyyxyyyy

xxxxxxxx

dcbadcbaz

dcbadcbay

dcbadcbax

P

] ][1 1 1 1[)1(

] ][1 1 1 1[)1(

] ][1 1 1 1[)1(

2

Page 8: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

))1´(),1´(),1´(()2,2,2(2

))0´(),0´(),0´(()1,1,1(1

zyxTTTT

zyxTTTT

zyx

zyx

))(),(),(()2,1,2,1,()( tzyytxTTPPtftP

P2

P1

T2

T1

10 t

Page 9: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

zzzzzzzz

yyyyyyyy

xxxxxxxx

ctbtadtctbtaPtz

ctbtadtctbtaPty

ctbtadtctbtaPtx

23)´()´(

23)´()´(

23)´()´(

223´

223´

223´

zzzzz

yyyyy

xxxxx

Tdcbatttz

Tdcbattty

Tdcbatttx

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

2

2

2

))1´(),1´(),1´(()2,2,2(2

))0´(),0´(),0´(()1,1,1(1

zyxTTTT

zyxTTTT

zyx

zyx

Page 10: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

))0´(),0´(),0´(()1,1,1(1 zyxTTTT zyx

zzzzz

yyyyy

xxxxx

cdcbaz

cdcbay

cdcbax

] ][0 1 0 0[)0´(

] ][0 1 0 0[)0´(

] ][0 1 0 0[)0´(

),,(1 zyx cccT

zzzzz

yyyyy

xxxxx

Tdcbatttz

Tdcbattty

Tdcbatttx

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

2

2

2

Page 11: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

))1´(),1´(),1´(()2,2,2(2 zyxTTTT zyx

zzzzzzzz

yyyyyyyy

xxxxxxxx

dcbadcbaz

dcbadcbay

dcbadcbax

23] ][0 1 2 3[)1´(

23] ][0 1 2 3[)1´(

23] ][0 1 2 3[)1´(

)23 ,23 ,23(2 zzzzyyyyxxxx dcbadcbadcbaT

zzzzz

yyyyy

xxxxx

Tdcbatttz

Tdcbattty

Tdcbatttx

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

] ][0 1 2 3[)´(

2

2

2

Page 12: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

Em resumo e colocando em forma matricial, temos ...

xxxx

x

xxxx

x

x

x

x

x

H

x

x

x

x

dcba

c

dcba

d

d

c

b

a

T

T

P

P

x

230123

0100

1111

1000

2

1

2

1

x

x

x

x

x

H

T

T

P

P

2

1

2

1

y

y

y

y

y

H

T

T

P

P

2

1

2

1

z

z

z

z

z

H

T

T

P

P

2

1

2

1

Page 13: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

x

x

x

x

x

H

T

T

P

P

2

1

2

1

y

y

y

y

y

H

T

T

P

P

2

1

2

1

z

z

z

z

z

H

T

T

P

P

2

1

2

1

x

x

x

x

x

T

T

P

P

H

2

1

2

1

1

y

y

y

y

y

T

T

P

P

H

2

1

2

1

1

z

z

z

z

z

T

T

P

P

H

2

1

2

1

1

Page 14: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

x

x

x

x

x

T

T

P

P

H

2

1

2

1

1

y

y

y

y

y

T

T

P

P

H

2

1

2

1

1

z

z

z

z

z

T

T

P

P

H

2

1

2

1

1

0123

0100

1111

1000

H

0001

0100

1233

1122

1H

Page 15: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

x

x

x

x

x

x

x

x

x

T

T

P

P

d

c

b

a

2

1

2

1

0001

0100

1233

1122

x

x

xxxx

xxxx

x

x

x

x

x

P

T

TTPP

TTPP

d

c

b

a

1

1

2122313

212212

Page 16: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

x

x

xxxx

xxxx

x

x

x

x

x

P

T

TTPP

TTPP

d

c

b

a

1

1

2122313

212212

y

y

yyyy

yyyy

y

y

y

y

y

P

T

TTPP

TTPP

d

c

b

a

1

1

2122313

212212

z

z

zzzz

zzzz

z

z

z

z

z

P

T

TTPP

TTPP

d

c

b

a

1

1

2122313

212212

Page 17: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

Juntando as idéias ...

x

x

x

x

x

T

T

P

P

H

2

1

2

1

zzzzz

yyyyy

xxxxx

Tdcbattttz

Tdcbatttty

Tdcbattttx

] ][1 [)(

] ][1 [)(

] ][1 [)(

23

23

23

]2121[]1 [)(

]2121[]1 [)(

]2121[]1 [)(

23

23

23

zzzz

yyyy

xxxx

TTPPHttttz

TTPPHtttty

TTPPHttttx

Page 18: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

Finalmente ...

2

1

2

1

))(),2(),32(),132(()( 23232323

T

T

P

P

ttttttttttP

xxxx TttTtttPttPtttx 2)(1)2(2)32(1)132()( 23232323

yyyy TttTtttPttPttty 2)(1)2(2)32(1)132()( 23232323

zzzz TttTtttPttPtttz 2)(1)2(2)32(1)132()( 23232323

Page 19: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas de Hermite

Finalmente ...

xxxx TttTtttPttPtttx 2)(1)2(2)32(1)132()( 23232323

yyyy TttTtttPttPttty 2)(1)2(2)32(1)132()( 23232323

zzzz TttTtttPttPtttz 2)(1)2(2)32(1)132()( 23232323

P2

P1

T2

T1

10 t

2)(1)2(2)32(1)132()( 23232323 TttTtttPttPtttP

Page 20: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies

As Curvas de Bézier

0B

1B

2B

3B

4B

5B

•Desenvolvida por Pierre Bézier durante seus trabalhos em projetos de automóveis para a Renault francesa no início da década de 1960.

• A grande maioria dos Softwares de Computação Gráfica disponíveisno mercado usam o conceito de Curvas de Bézier. Entre eles:Adobe, Corel Draw,AutoCad, Paint Shop Pro, 3D Studio Max

Page 21: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

0B

1B

2B

3B

4B

5B

•Esse tipo de curva, por não usar o conceito de vetor e apenas pontos, é mais

compreensível pelos usuários.

• Para ajuste por u polinômio de grau n, a curva de Bézier pode ser gerada por3, 4, até n-1 pontos de controle.

• Geralmente, é suficiente usar 4 pontos, gerando uma curva cúbica.

• A curva de Bézier passa pelo primeiro e último ponto, e usa os demais para construir sua tangente.

Page 22: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

0B

1B

2B

3B

4B

5B

10 ,)()(0

,

ttJBtPn

iini

iniiniin tt

ini

ntt

i

ntJ

1

)!(!

!1)(,

n

iin tJ

0, 1)(

Page 23: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

10 1)(0

,

ttJn

iin

Essa propriedade é chamada de propriedade normalizante, e força a curva gerada a ficar inteiramente dentro da figura convexa(convex hull) definida pelos pontos de controle Bi

0B

1B

2B

3B

5B

0B

1B 2B

3B4B

5B

Page 24: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

0B

1B

2B3B

40 BB

1B

2B3B

4B

Conexão de vários segmentos de curvas de graus menores parasimplificação da expressão

Page 25: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

Níveis de continuidade da união entre duas curvas

sem continuidadecontinuidade C0

continuidade C1continuidade C2

Page 26: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

Como exemplo didático apenas, supomos n = 2. Nesse caso, temostrês pontos e controle: B0, B1 e B2

00 ,)()(0

,

ttJBtPn

iini 11

, 1)!(!

!1)(

nini

in ttini

ntt

i

ntJ

2

1

02

2

1

022

221

20

022

111

200

2

00

001

022

121

1)1(2)1()(

)1(2)1()(

)1(!0!2

!2)1(

!1!1

!2)1(

!2!0

!2)(

)1()!2(!

!2)1(

)!(!

!)(

B

B

B

tt

B

B

B

tttttP

tBttBtBtP

ttBttBttBtP

ttii

Bttini

nBtP

i

inii

n

i

inii

Page 27: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

De uma forma mais compacta e elegante, temos a curva de Bézierquando n=2.

BBGM

T B

B

B

tttP

2

1

02

001

022

121

1)(

• T é o vetor de potências da curva de Bézier de grau n = 2

• MB é a Matriz de coeficientes da curva de Bézier de grau n = 2

• GB é a Matriz de pontos de controle que definem a geometriada curva de Bézier de grau n = 2

Page 28: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: as curvas de Bézier

De uma forma análoga, as matrizes da curva de Bézier quando n=3.

BB GM

T

B

B

B

B

ttttP

3

2

1

0

23

0001

0033

0363

1331

1)(

Que leva à expressão:

33

22

12

03 )1(3)1(3)1()( BtBttBttBttP

Page 29: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies

•Desenvolvida em 1967 por Schenberg, são até hoje os tipos mais populares em Computação Gráfica.

• Uma B-Spline é uma versão da curva de Bézier que não passa pelos pontos de controle, o que permite ela ser gerada para qualquer número de pontos de controletornando o grau do polinômio independente do número de pontos bases.

0B

1B

2B

3B

4B

5B

B-Splines

Page 30: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: B-Splines

• A forma básica da B-Spline é bastante semelhante à curva de Bézier. Nas B-Splinesum conjunto Ni,k(t) combina o efeito dos pontos de controle Bi para gerar a curva.

0B

1B

2B

3B

4B

5B

n

ikii tNBtP

0, )()(

Page 31: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: B-Splines

)()(1

)(

intervalos demais nos 0

para 1)(

1,111

1,,

10,

tNtt

tttN

tt

ttN

ttttN

kiiki

kiki

iki

iki

iii

n

ikii tNBtP

0, )()(

O parâmetro k controla a ordem de continuidade da curva, e n o número de pontosde controle Bi usados.

Os parâmetros são chamados nós e podem ser qualquer seqüência crescente uniforme, não-uniforme, periódica ou não-periódica.

mttt ,,, 10

Page 32: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: B-Splines

21 set -2

10 set )(2, t

ttN i

n

ikii tNBtP

0, )()(

para k = 2

Page 33: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: B-Splines

32 se )3(2

1

21 se 2

3-t-

4

3

10 se 2

1

)(

2

2

2

3,

tt

t

tt

tN i

n

ikii tNBtP

0, )()(

para k = 3

Page 34: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: B-Splines

43 se )4(6

1

32 se 2-t -2-t2

1-

3

2

21 se 2-t -2-t2

1-

3

2

10 se 6

1

)(

3

23

23

3

4,

tt

t

t

tt

tN i

n

ikii tNBtP

0, )()(

para k = 4

Page 35: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas Racionais

Forma Inteira Forma Racional

Bézier

n

iini tJB

0, )(

n

iini

n

iinii

tJw

tJBw

0,

0,

)(

)(

B-Spline

n

ikni tNB

0, )(

n

ikii

n

ikiii

tNw

tNBw

0,

0,

)(

)(

As curvas vistas até agora possuem uma versão racional, que são normalizadas por pesos wi

A vantagem da representação racional é a invariância com relação à projeção

Page 36: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas Racionais

De forma geral, para cada ponto da curva temos:

n

iin

Wi

w tJBtP0

, )()( para as curvas de Bézier

n

iki

Wi

w tNBtP0

, )()( para as curvas B-Splines

Page 37: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Curvas Racionais

Para o caso específico da B-Spline, se o conjunto de nós for não-uniforme, e a curva tratar-se de uma superfície racional, ela é chamada de Non Uniform Rational Base Spline, mais conhecida como NURBSAs curvas racionais, principalmente as NURBS, têm se tornado muito populares, sobretudo em sistemas complexos como CAD.

Controlando os pesos, podemos controlar a suavidade da curva próximo aos pontos de controle correspondentes.

0B

1B

2B

3B

4B

5B

6B1.03 w

5.0

0.4

Page 38: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Superfícies Bézier

As superfícies de Bézier são uma extensão direta das curvas de Bézier,uma vez que basta apenas acrescentar mais uma dimensão.A expressão para as superfícies de Bézier é a seguinte:

1,0 )()(),(0 0

,,,

tstJsJBtsPn

i

m

jmjniji

TMG),( TBBBSMtsP

]1ttt[MG]1[),( 23TBB

23BMssstsP

0001

0033

0363

1331

BM

3,32,31,30,3

3,22,21,20,2

3,12,11,10,1

3,02,01,00,0

PPPP

PPPP

PPPP

PPPP

GB

Page 39: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Superfícies B-Splines

As superfícies de B-Splines, como as superfícies de Bézier, são uma extensão direta das curvas de B-Splines, uma vez que basta apenas acrescentar mais uma dimensão. A expressão para as superfícies de Bézier é a seguinte:

1,0 )()(),(0 0

,,,

tstNsNBtsPn

i

m

jljkiji

0,0P

0,3P 1,3P 2,3P 3,3P

3,2P

3,1P

3,0P0,2P

0,1P

1,0P 2,0P

Page 40: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: Superfícies Racionais

),( tsP Forma Inteira Forma Racional

Bézier

n

i

m

jmjniji tJsJB

0 0,,, )()(

n

i

m

jmjniji

n

i

m

jmjnijiji

tJsJw

tJsJBw

0 0,,,

0 0,,,,

)()(

)()(

B-Spline

n

i

m

jljkiji tNsNB

0 0,,, )()(

n

i

m

jljkiji

n

i

m

jljkijiji

tNsNw

tNsNBw

0 0,,,

0 0,,,,

)()(

)()(

Assim como as curvas, as superfícies possuem a versão racional, e da mesma forma são normalizadas por pesos wi

Page 41: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: NURBS em OpenGL

Para desenhar uma curva de Bézier em OpenGL, são necessários 2 passos básicos:

1- Definir um avaliador através da função glMap12 - Avaliar o polinômio criado em 1 através da função glEvalCoord1

glMap1(Glenum target, Type t0, Type t1, Glint Stride, Glint order, TYPE *points)

• target: define que tipo de ponto tem a curva, exemplo: GL_MAP1_VERTEX_3• t0: valor mínimo da faixa a ser avaliada, exemplo, 0.0• t1: valor máxima da faixa a ser avaliada, exemplo, 1.0• stride: número de pontos-flutuantes entre cada par de ponto de controle sequencial• ordem: significa que o grau do polinômio criado é n = ordem -1• *points: ponteiro para o primeiro elemento de um vetor de pontos de controle

glEvalCoord1(Type u): esta função avalia o polinômio criado com glMap1 para a faixa de valores t0-t1.

Page 42: Computação Gráfica: Aula2: Curvas e Superfícies psergio psergio@fei.edu.br

Curvas e Superfícies: NURBS em OpenGL

Está curioso por mais detalhes interessantes? ...

... não perca as aulas de LAB!!!