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

Preview:

Citation preview

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

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

psergio@fei.edu.br

Curvas e Superfícies

As Curvas de Hermite

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

P2

P1

T2

T1

10 t

Curvas e Superfícies: Curvas de Hermite

)2,1,2,1( TTPPP

zzzzz

yyyyy

xxxxx

dtctbtaPtz

dtctbtaPty

dtctbtaPtx

23

23

23

)(

)(

)(

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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)(

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

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

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

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

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

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

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

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, )()(

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

Curvas e Superfícies: B-Splines

21 set -2

10 set )(2, t

ttN i

n

ikii tNBtP

0, )()(

para k = 2

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

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

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

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

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

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

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

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

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.

Curvas e Superfícies: NURBS em OpenGL

Está curioso por mais detalhes interessantes? ...

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