Computação Gráfica – Modelagem
Geométrica
Profa. Mercedes Gonzales
Márquez
Tópicos



Curvas
Superfícies
Técnicas principais de Modelagem
Geométrica
Curvas e Superfícies - Introdução

Estuda-se dentro do escopo da Modelagem Geométrica.
Curvas são a base, tanto da geração de formas simples,
como círculos e elipses, quanto na criação de projetos
complexos como automóveis, navios, aeronaves ou até
mesmo faces e corpos humanos.
Introdução


Curvas e superfícies desempenham um papel
importante em várias áreas, como criação de objetos e
visualização de fenômenos científicos.
Representar uma curva como uma sucessão de linhas
retas não é suficiente. O desafio maior é definir uma
curva que passe por um determinado conjunto de
pontos.
Representação de Curvas

Basicamente existem duas formas principais de
representar curvas:
(A)
(B)
Por um conjunto de pontos;
Por representação analítica.
Representação de Curvas
(A) Por Conjunto de Pontos
–
A curva é representada por um conjunto finito de
pontos conectados por pequenos segmentos de
retas.
Representação de Curvas

Para ter uma aparência “natural” deve-se usar um
conjunto grande de pontos.
A
B
Representação de Curvas
(B) Representação Analítica
Usa uma ou mais equações. Vantagens:
– Maior precisão;
– Mais compacta;
– Não requer área de armazenamento;
– Facilidade de calcular novos pontos (caso necessário);
– Facilidade de cálculo de propriedades da curva como
área, inclinação, curvatura;
– Maior simplicidade para ser redesenhada quando
sujeita a transformações como escala, rotação,
projeções, etc.
Representação de Curvas

A representação analítica de curvas pode usar ou não
parâmetros, sendo classificados como
B.1. paramétricas
B.2. não-paramétricas.

As formas não-paramétricas podem ser, ainda,
B.2.1. explícitas
B.2.2. implícitas.
Representação de Curvas
B.1 Formas paramétricas
As coordenadas são dadas em termos de um (conjunto)
de parâmetros. Usa-se um parâmetro (t, , etc.) para
definir as coordenadas dos pontos da curva.
P(t) = (x(t), y(t))
Exemplos:
–
Representação de Curvas
B.1 Formas paramétricas
P(t) = (x(t), y(t))
Exemplos:
Representação de Curvas
B.1. Formas paramétricas
P(t) = (x(t), y(t))
Exemplos:
Representação de Curvas
B.2. Formas não-paramétricas
Não há parâmetros e uma coordenada da curva é
dada em função da outra, ou seja
y = f(x) ou x = f(y)
–Exemplos:
1) Equação de um semi-círculo de raio 2
y  22  x 2
ou
x  22  y 2
2) Equação de uma reta
y = 2x – 1 ou x = ½ (y + 1)
Representação de Curvas
B.2.1 Forma não-paramétrica explícita : É dada por
uma equação do tipo y = f(x), ou seja uma das
coordenadas é explicitamente dada em função
das outras.
Exemplos:
1) Equação genérica explícita de uma parábola:
y = ax2 + bx + c
2) Equação de uma reta
y = mx + b
3) Polinômios:
P(x) = anxn + an-1xn-1 + ... + a2x2 + a1x1 + a0
–
Representação de Curvas

Obtém-se um valor de y para cada valor de x
dado.
Representação de Curvas

B.2.2. A representação implícitas não tem essa limitação.
Nela as coordenadas são relacionadas por uma função. A
sua forma é
Representação de Curvas


Exemplo: seções cônicas.
ax2 + bxy + cy2 + dx + ey + f = 0
Essa expressão representa a variedade de
curvas planas denominadas seções cônicas.
Essas curvas (cinco) são obtidas pelo corte de
um cone por um plano, resultando em: círculo,
elipse, parábola, hipérbole, reta.
Representação de Curvas
Representação de Curvas
Cônica
Forma Paramétrica
Forma Implícita
Elipse
x = a cos 
y = b sen 
x2 y2
 2 1  0
2
a
b
Parábola
x = at2, y = 2at
y2 – 4ax = 0
Hipérbole
x = a cosh 
y = b senh 
2
2
x
y
 2 1  0
2
a
b
Exercício
Veja programas circle.cpp, parabola.cpp, helix.cpp
Curvas de Bézier




É uma técnica de aproximação de curvas.
Uma curva de Bézier pode ser gerada por 3, 4, até n + 1
pontos de controle (ajuste para um polinômio de grau n).
Geralmente utiliza-se quatro pontos de controle (forma
cúbica).
A curva passa pelo primeiro e pelo último ponto de
controle.
Curvas de Bézier
B2
B1
B3
B0
Figura 1
Curvas de Bézier

A curva paramétrica de Bézier é definida como:
n
P(t )   Bi J n,i (t ),
0  t 1
i 0
 Onde
Bi representa cada um dos n+1 pontos de controle
considerados e Jn,i (t) são as funções que combinam a
influência de todos os pontos (blending functions).
 Essas funções são descritas pelos polinômios de
Bernstein como:
 n i
J n,i (t )   t (1  t ) ni
i
Curvas de Bézier

onde n é o grau dos polinômios e:
 n
n!
  
 i  i!(n  i)!
(i = 0, 1, ..., n) são os coeficientes binomiais.
 Essas funções Jn,i (t) devem satisfazer as condições: Jn,i
(t)  0 para todo i entre 0 e 1, isto é 0 ≤ t ≤ 1 e também:
n
J
i 0
n ,i
(t )  1,
0  t 1
Curvas de Bézier

Expressões que definem as curvas de Bézier:
– Para três pontos de controle  polinômios com
grau 2.
P(t) = (1 – t)2 B0 + 2t (1 – t) B1 + t2B2,
onde t inicialmente é 0.
P(t )  [t 2
 1  2 1  B0 
t 1] 2 2 0  B1 
 1
0 0  B2 
Curvas de Bézier

Expressões que definem as curvas de Bézier:
– Para quatro pontos de controle  polinômios com
grau 3.
P(t) = (1 – t)3 B0 + 3t (1 – t)2 B1 + 3t2 (1 – t)B2 + t3B3,
onde t inicialmente é 0.

P(t )  t 3
t2
 1 3  3
 3 6 3
t 1
 3 3
0

0
0
1

1  B0 
3  B1 
0  B2 
 
0  B3 
Curvas de Bézier - Algoritmo


Material auxiliar para melhor entendimento de
curvas e superfícies de Bézier, veja applets java em
http://www.dca.fee.unicamp.br/courses/EA978/1s20
03/demos/geometry.html
Exercício:
Faça um programa que dado um número n, permita
o ingresso interativo (pelo cliques do mouse) de
n+1 pontos de controle e construa a curva de
Bézier correspondente. Preste atenção que as
coordenadas da cena diferem ligeiramente das
coordenadas da tela onde os cliques serão feitos.
Curvas de Bézier - Problemas
1.
2.
Falta de controle local : Uma alteração em um ponto no
polígono de Bézier acarreta alterações em toda a curva
de Bézier. Indesejável quando desejamos fazer ajustes
finos.
O grau do polinômio cresce com o número de pontos
de controle do polígono de controle.
Superfícies Bézier
- Generalização da idéia de curva de Bézier.
- Sejam Bij, i=0,...,m, j=0,...,n, um conjunto de pontos no R3
de tal forma que sua projeção no plano x0y seja formada
pelos vértices de mn retângulos de mesmas dimensões. A
superfície de Bézier definida no domínio [0,1]x[0,1] é
n
Q( u, v )  
i 0
m
B J
j 0
ij
ni
( u) K mj (v )
Onde Jni e Kmj são os polinômios de Bernstein.
Superfícies Bézier
Outras representações de Superfícies
Representação Octree: (estrutura de árvore)
Envolve o objeto por um cubo que em seguida é
subdividido em 8 cubos menores. Cada um deles pode
ser : Cheio, vazio ou cheio-vazio. Os nós cheios ou
vazios são terminais, enquanto os cheio-vazios não são.
Representação Octree: Exemplo
Representação Octree: Exemplo
Geometria Sólida Construtiva (CSG)

Consiste em construir um objeto a partir da combinação
operatória (união, interseção e diferença) de dois ou mas
sólidos.
Geometria Sólida Construtiva (CSG)
Varredura (Sweeping)

Uma superfície é descrita quando uma curva C1 (curva
geratriz) é deslocada no espaço, ao longo de uma
trajetória dada por uma outra curva C2 (caminho o
diretriz).
- Varredura translacional (Extrusão ou superfícies geradas
por deslocamento)
Varredura (Sweeping)
- Varredura rotacional (ou superfícies de revolução)
Varredura (Sweeping)
- Varredura rotacional (ou superfícies de revolução)
Malha de Polígonos
- Coleções de polígonos (ou faces) que, juntos,
formam a “pele” ou “casca” do objeto
• Forma rápida e prática para representar objetos
Estrutura de Dados
. Lista contígua das coordenadas de todos os vértices
que compõem cada face.
- Arestas implícitas
- Faces explícitas
Malha de Polígonos
- Coleções de polígonos (ou faces) que, juntos,
formam a “pele” ou “casca” do objeto
• Forma rápida e prática para representar objetos
Superfície de Revolução - Tarefa




Material auxiliar para melhor entendimento de curvas e
superfícies, veja programa torus.c, superficies.c e o
executável swprj.exe
O programa torus.c (disponível no site da disciplina)
desenha a superfície chamada torus.
O executável swprj.exe permite desenhar uma curva
geratriz que dará origem a uma superfície de revolução
O programa superfícies.c permite desenhar uma curva
de Bézier como curva geratriz e a partir dela obter uma
superfície de revolução.
Superfície de Revolução - Tarefa


Compare o programa torus.cpp da pasta Code com o
programa torus.c disponibilizado no site da disciplina.
Para consulta de comandos novos use o livro RedBook
disponibilizado também no site da disciplina.
Desenhar um cilindro como superfície de revolução
usando um segmento de reta como curva geratriz.
Download

Representação de Curvas