Title: Computa
1Computação Gráfica Aula2 Curvas e Superfícies
- http//www.fei.edu.br/psergio
- psergio_at_fei.edu.br
2Curvas e Superfícies
3Curvas e Superfícies Curvas de Hermite
4Curvas e Superfícies Curvas de Hermite
5Curvas e Superfícies Curvas de Hermite
6Curvas e Superfícies Curvas de Hermite
7Curvas e Superfícies Curvas de Hermite
8Curvas e Superfícies Curvas de Hermite
9Curvas e Superfícies Curvas de Hermite
10Curvas e Superfícies Curvas de Hermite
11Curvas e Superfícies Curvas de Hermite
12Curvas e Superfícies Curvas de Hermite
Em resumo e colocando em forma matricial, temos
...
13Curvas e Superfícies Curvas de Hermite
14Curvas e Superfícies Curvas de Hermite
15Curvas e Superfícies Curvas de Hermite
16Curvas e Superfícies Curvas de Hermite
17Curvas e Superfícies Curvas de Hermite
Juntando as idéias ...
18Curvas e Superfícies Curvas de Hermite
Finalmente ...
19Curvas e Superfícies Curvas de Hermite
Finalmente ...
20Curvas e Superfícies
- 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íveis - no mercado usam o conceito de Curvas de Bézier.
Entre elesAdobe, Corel Draw, - AutoCad, Paint Shop Pro, 3D Studio Max
21Curvas e Superfícies as curvas de Bézier
- 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 por - 3, 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.
22Curvas e Superfícies as curvas de Bézier
23Curvas e Superfícies as curvas de Bézier
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
24Curvas e Superfícies as curvas de Bézier
Conexão de vários segmentos de curvas de graus
menores para simplificação da expressão
25Curvas e Superfícies as curvas de Bézier
continuidade C0
continuidade C2
continuidade C1
sem continuidade
Níveis de continuidade da união entre duas curvas
26Curvas e Superfícies as curvas de Bézier
Como exemplo didático apenas, supomos n 2.
Nesse caso, temos três pontos e controle B0, B1
e B2
27Curvas e Superfícies as curvas de Bézier
De uma forma mais compacta e elegante, temos a
curva de Bézier quando n2.
- 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 geometria - da curva de Bézier de grau n 2
28Curvas e Superfícies as curvas de Bézier
De uma forma análoga, as matrizes da curva de
Bézier quando n3.
Que leva à expressão
29Curvas e Superfícies as curvas de Bézier
Algoritmo de Casteljau
30Curvas e Superfícies as curvas de Bézier
Aspectos Computacionais
- As curvas de Bézier são computacionalmente
baratas, mesmo com - uma discretização de t muito pequena.
- Manuseio das curvas
- RESUMO
- Curva Poligonal
- Avaliação por polinômios de Bernstein
- Algoritmo de Casteljau
- Número de pontos controle e grau são
interdependentes - Propriedade de Convex Hull
31Curvas 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 glMap1 2 - 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.
32Curvas e Superfícies as curvas de Bézier
Funções para Usar no Lab
- // variável Global para os Pontos de Controle
- GLfloat ctrlpoints43
- -4.0, -4.0, 0.0, -2.0, 4.0, 0.0,
- 2.0, -4.0, 0.0, 4.0, 4.0, 0.0
- // Função na Main para a criação da Curva
- glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4,
ctrlpoints00) - glEnable(GL_MAP1_VERTEX_3)
33Curvas e Superfícies as curvas de Bézier
Funções para Usar no Lab
void Desenha2() int i // avaliação
da Curva glClear(GL_COLOR_BUFFER_BIT)
glColor3f(0.0, 0.0, 0.0) glBegin(GL_LINE_STRIP
) for (i0 i lt30 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 (i0 i lt 4 i)
glVertex3fv(ctrlpointsi0)
glEnd() glFlush()
34Curvas e Superfícies as curvas de Bézier
Resultado
35Curvas e Superfícies
B-Splines
- 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 controle - tornando o grau do polinômio independente do
número de pontos bases.
36Curvas e Superfícies B-Splines
- A forma básica da B-Spline é bastante semelhante
à curva de Bézier. Nas B-Splines - um conjunto Ni,k(t) combina o efeito dos pontos
de controle Bi para gerar a curva.
37Curvas e Superfícies B-Splines
O parâmetro k controla a ordem de continuidade da
curva, e n o número de pontos de controle Bi
usados.
38Curvas e Superfícies B-Splines
para k 2
39Curvas e Superfícies B-Splines
para k 3
40Curvas e Superfícies B-Splines
para k 4
41Curvas e Superfícies Curvas Racionais
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
42Curvas e Superfícies Curvas Racionais
De forma geral, para cada ponto da curva temos
para as curvas de Bézier
para as curvas B-Splines
43Curvas 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
NURBS
As 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.
44Curvas 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
45Curvas 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
46Curvas e Superfícies Superfícies Racionais
Assim como as curvas, as superfícies possuem a
versão racional, e da mesma forma são
normalizadas por pesos wi
47Curvas e Superfícies NURBS em OpenGL
Está curioso por mais detalhes interessantes?
... ... não perca as aulas de LAB!!!