Você está na página 1de 51

Modelos de Curvas e Curvas de

Bzier
Gilzamir Gomes

Viso Geral
Curvas e Superfcies
Formas de Representao
Propriedades
Problemas
Abordagens

Formas de Representao
Conjunto de Pontos
Analtica
Explicita
Implcita
Paramtrica

Formas de Representao
Analtica
Explicita: uma varivel descrita em funo da
outra, como em = (, )

Formas de Representao
Analtica
Explicita: uma varivel descrita em funo da
outra, como em = () e = ,
No apropriada para representar curvas onde,
para um mesmo valor de , podem haver vrios
valores de associados

Formas de Representao
Analtica
Implcita: Nessa representao, uma curva em 2D e
uma superfcie em 3D so representados como os
zeros de uma funo (, , ) = 0. Exemplo: esfera
unitria: 2 + 2 + 2 1 = 0.
Dizemos que uma curva ou superfcie algbrica se ela pode
ser expressa na forma de zeros de um polinmio.
O grau de uma funo algbrica dada pela maior soma de
suas potncias. Exemplo: ( 2 ) tem grau 1 + 2 + 1 = 4.
Uma curva em 3D pode ser representada pela interseo de
duas superfcies, ou seja, atravs de um sistema de
equaes algbricas (e portanto pode ser trabalhoso).

Formas de Representao
Paramtrica
Nessa representao, uma curva em 2D dada como
duas funes de um parmetro ( , ),
enquanto, uma curva em 3D dada atravs de 3
funes de dois parmetros ((, ), (, ), (, )).
Exemplo: esfera

x(u,v) = cos v cos u


y(u,v) = cos v sin u
z(u,v) = sin v
Para 0 360 e 90 90

Escolha da Representao
Depende da aplicao

Escolha da Representao
Depende da aplicao
Representaes implcitas so melhores para
se calcular interseces de um raio com uma
superfcie, ou acima ou abaixo dela.

Escolha da Representao
Depende da aplicao
Representaes implcitas so melhores para
se calcular interseces de um raio com uma
superfcie, ou acima ou abaixo dela.
Representaes paramtricas so mais
apropriadas caso voc precise dividir a
superfcie em polgonos
pequenos para
rendering e, portanto, elas se tornaram
bastante popular em CG.

Escolha da Representao
Depende da aplicao
Representaes implcitas so melhores para se
calcular interseces de um raio com uma
superfcie, ou acima ou abaixo dela.
Representaes
paramtricas
so
mais
apropriadas caso voc precise dividir a superfcie
em polgonos pequenos para rendering e,
portanto, elas se tornaram bastante popular em
CG.
Em alguns casos possvel converter uma
representao em outra, porm nem sempre.

Aplicaes
Curvas

Modelagem por Superfcies Limitantes


(Boundary Representation)
Modelos B-Rep (Boundary Representatition) podem ser
formados ou de superfcies suaves ou superfcies planas
(poligonais).
Superfcies poligonais so mais adequadas para representao
de objetos com lados planos, como um cubo.
Contudo, mesmo objetos suaves podem ser aproximados pela
juno de um grande nmero de objetos poligonais em uma
malha de polgonos (Abordagem do OpenGL).
Atravs do uso de malhas de polgonos e sombreamento
smooth possvel produzir a iluso de uma superfcie lisa.
Mesmo quando superfcies algbricas so usadas em uma
representao subjacente, a fim de renderiz-la,
frequentemente necessrio convert-la em uma malha
poligonal.

Modelagem de Objetos juntamente


com Outras Tcnicas

Continuidade
Curvas

Continuidade de Curvas Paramtricas


Considere a curva paramtrica =
, ,

Propriedades desejadas
A curva deveria ser to suave quanto possvel.
A suavidade importante para a unio de duas ou mais
curvas.

Continuidade de Curvas Paramtricas


Considere a curva paramtrica =

, , .
Noo intuitiva de continuidade: no fazer
saltos repentinos de valor
Continuidade de ordem : , se a primeira
continuidade existe como funo de .
Compromisso de custo computacional versus
representao: 2

Continuidade
Graus de continuidade

Outra Forma de se Observar a


Continuidade
Continuidade posicional: pontos de controle
extremidades de juno devem ser coincidentes.
No garante condies de suavidade na juno

das

Outra Forma de se Observar a


Continuidade
Continuidade tangencial: a tangente primeira curva tenha
direo coincidente segunda curva no ponto
correspondente.
Garante condies de
suavidade na juno.

Aproximao de Curvas
Curvas de Bzier

Interpolaao versus Aproximao


Para um designer que deseja projetar uma curva
ou superfcie, uma representao matemtica da
curva como uma formula matemtica no uma
representao fcil de lidar.
Mtodo mais natural: sequncia de pontos de
controle
Um sistema automaticamente aproxima esta curva
sequncia.
Entrada do procedimento: conjunto de pontos
Sada: uma representao paramtrica de uma curva

Interpolao versus Aproximao


Espera-se uma curva que passe pelos pontos
de controle (interpolao entre os pontos)
Interpolao polinomial lagrangiana
Dificuldade da interpolao polinomial
lagrangiana
Oscilao da curva passando pelo conjunto de pontos
dificulta modelagem de formas aproximadamente
lineares (a curvas oscila mais do que o polgono
formado pelos pontos de controle, formando ondas
passando pelos pontos de controle)

Interpolao versus Aproximao


Comparao entre interpolao e
aproximao

Implementao de uma Curva de


Bzier
Curvas de Bzier

Curvas de Bzier e Algoritmo de


Casteljau
Uma abordagem para o problema de
Aproximar uma curva suave que aproxima uma
sequncia de pontos de controle, (0 , 1 , ).

Curvas de Bzier
Dados dois pontos de controle, 0 e 1 , uma
curva simples apenas o segmento de reta
0 1 .
Combinao afim:
= 1 0 + 1
01

Curvas de Bzier
Interpolaes repetidas

Curvas de Bzier
Generalizao para trs pontos de controle:
Dados 0 1 e 1 2
01 = 1 0 + 1
11 = 1 1 + 1

Curvas de Bzier
= 1 01 + 11
= 1 1 0 + 1 +
( 1 1 + 2 )
= 1 2 0 + 2 1 1 + 2 2

Curvas de Bzier
= 1 2 0 + 2 1 1 + 2 2
Curva paramtrica algbrica de grau 2
Soma ponderada dos pontos de controle usando
as seguintes funes de combinao (blending
functions):
02 = 1

12 = 2 1

22 = 2

Qualquer ponto na curva uma combinao


convexa dos pontos de controle

Curvas de Bzier
Quatro pontos de controle
0 , 1 , 2 , 4
02 = 1 01 + 11 ()
12 = 1 11 + 21 ()
Finalmente:
=
1 3 0 + 3 1
3 3

1 + 32 1 2 +

Curvas de Bzier
Blending Functions para quatro pontos de
controle:

Curvas de Bzier

Curvas de Bzier
Em geral, a i-sinma blending function para
uma curva de bzier de grau tem a forma
geral:

Estas funes polinomiais so denominadas


de funes polinomiais de Bernstein.

Curvas de Bzier
Polinmios de Bernstein

Curvas de Bzier
Este processo de interpolao repetida que
gera o polinmios da curva de bzier
chamado de algoritmo de Casteljau.

Propriedades da Curva de Bzier


Cada ponto na curva de Bzier uma combinao
convexa dos pontos de controle
A curva est contido no fecho convexo do polgono,
isso implica que um polgono plano sempre gera uma
curva plana.
A curva exibe a propriedade da variao decrescente:
a curva no oscila em relao a qualquer linha reta
com mais frequncia que o seu polgono de definio.
Sempre suavizam os pontos de controle
A curva nunca cruza uma linha reta arbitrria mais vezes que
a sequncia de segmentos que conectam os pontos de
controle.

Propriedades da Curva de Bzier


So invariantes sob transformaes afins. Os
seguintes procedimentos produzem o mesmo
resultado:
Primeiro, calcula-se um ponto na curva, e depois
aplica-se uma transformao afim
Primeiro, aplica-se uma transformao afim ao
polgono de definio, e depois gera-se a curva.

Trabalho
Implemente um sistema interativo com GLUT
e OpenGL que permita ao usurio especificar
os pontos de controle de uma curva de bzier.
O sistema deve desenhar a curva
correspondente aos pontos indicados pelo
usurio. (Este trabalho vale quatro pontos no
terceiro AP).

Introduo s Superfcies de
Bzier
Superfcies de Bzier

Caracterizao
A superfcie de Bzier um quadriltero
curvilneo, delimitado por curvas cbicas
tridimensionais (curvas de Bzier)
Para sua construo, so necessrios 16
pontos de controle.

Superfcies de Bzier: Patch

Transformaes nas Superfcies

Juno de Patches

Juno de Patches
Dessa forma, torna-se bem mais complicado
representar um objeto, quando consideramos
vrios
patches;
principalmente
na
implementao de mudanas ao modelo. Por
exemplo, caso desejemos movimentar um
ponto de controle localizado na interseco de
quatro patches, na realidade seremos
obrigados a movimentar seus 8 vizinhos, para
manter a integridade na representao. A
figura abaixo ilustra o exemplo.

Juno de Patches

Curvas de Bzier em OpenGL

Para desenhar uma curva de Bzier em OpenGL,


so necessrios 2 passos bsicos:
1- Definir um avaliador atravs da funo glMap1
2 - Avaliar o polinmio criado em 1 atravs da funo 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 mnimo da faixa a ser avaliada, exemplo, 0.0
t1: valor mxima da faixa a ser avaliada, exemplo, 1.0
stride: nmero de pontos-flutuantes entre cada par de ponto de controle sequencial
ordem: significa que o grau do polinmio criado n = ordem -1
*points: ponteiro para o primeiro elemento de um vetor de pontos de controle
glEvalCoord1(Type u): esta funo avalia o polinmio criado com glMap1
para a faixa de valores t0-t1.

Curvas de Bzier em OpenGL


Funes para Usar no Lab
// varivel Global para os Pontos de Controle
GLfloat ctrlpoints[4][3] = {
{-4.0, -4.0, 0.0}, {-2.0, 4.0, 0.0},
{2.0, -4.0, 0.0}, {4.0, 4.0, 0.0}};
// Funo na Main para a criao da Curva
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]);
glEnable(GL_MAP1_VERTEX_3);

Curvas de Bzier em OpenGL


void Desenha2()
{
int i;
// avaliao da Curva
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
for (i=0; i <=30; i++)
glEvalCoord1f((GLfloat) i/30.0);
glEnd();
// Plotagem dos pontos de controle
glPointSize(5.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_POINTS);
for (i=0; i < 4; i++)
glVertex3fv(&ctrlpoints[i][0]);
glEnd();
glFlush();
}

Curvas de Bzier em OpenGL


Resultado