Escolar Documentos
Profissional Documentos
Cultura Documentos
CURVAS E SUPERFÍCIES
Mar/2020
O que é Modelagem?
Modelagem é o uso de técnicas para criar
representações matemáticas ou simbólicas de
objetos tridimensionais que, posteriormente, serão
convertidas em imagens.
2
Representação de Objetos
A representação matemática
ou simbólica empregada na
modelagem de objetos deve
ser conveniente aos algoritmos
gráficos utilizados.
V4 V3 V4 V3
Ou
V1 V2 V1 V2
4
Exemplos
Isto é um cubo? Vértices
A =(0, 0, 0) Arestas
H G
B = (1, 0, 0) AB, BC,
D C C = (1, 1, 0) CD, DA,
D = (0, 1, 0) EF, FG,
E F E = (0, 0, 1) GH, HE,
F = (1, 0, 1) AE, BF,
A B
G = (1, 1, 1) CG, DH
H = (0, 1, 1)
Sim
e 6 faces delimitam um
Não! volume fechado para o
sólido. Então é um cubo!
5
Aproximação de Curvas por Polylines
Resumidamente, curvas podem ser aproximadas por
curvas poligonais (polylines)
Polyline
Curva
aproximada
ou
retificada
6
Representação Poliédrica de Objetos
Consiste em utilizar faces planas para representar
uma aproximação de sólidos tridimensionais.
7
Representação Poliédrica de Objetos
O incremento no número de faces melhora a
aproximação da representação poliédrica para
superfícies curvas, porém aumenta o consumo de
processamento e memória.
V3
P1 P2
P1 = {V1, V2, V3}
V1 V4
P2 = {V2, V4, V3}
V2
V3
V = {V1, V2, V3, V4}
V1 P1 P2 V4 P1 = {&V1, &V2, &V3}
P2 = {&V2, &V4, &V3}
V2
V3
A3 A5
V1 P1 A2 P2 V4
A1 A4
V2
e c Lista de Faces
Face Aresta da Face
F1 &d
F2 &b 15
Winged-Edge – Exemplo
Lista de Vértices
D Vértice Coordenadas Aresta
Nome x y z Incidente
F3
A Ax Ay Az &a
a e B Bx By Bz &c
C Cx Cy Cz &e
c
D Dx Dy Dz &a
F1 F2
A C
f Lista de Faces
b d Face Aresta da Face
F4
B F1 &a
F2 &c
F3 &e
F4 &f
16
Winged-Edge – Exemplo
D Lista de Arestas
F3 Aresta Vértices Faces Face Esq. Face Dir.
Nome Ini Fim Esq Dir Pre Suc Pre Suc
a e a &A &D &F3 &F1 &f &e &c &b
c b &A &B &F1 &F4 &a &c &d &f
F1 F2 c &B &D &F1 &F2 &b &a &e &d
A C
f d &B &C &F2 &F4 &c &e &f &b
b d e &C &D &F2 &F3 &d &c &a &f
F4
f &C &A &F3 &F4 &e &a &b &d
B
17
Winged-Edge – Polígonos com Buracos
18
Winged-Edge – Polígonos com Buracos
Para uma face com
buracos internos, a borda
externa é percorrida em
sentido horário enquanto
os buracos internos são
percorridos em sentido
anti-horário.
22
Malhas Poligonais (Polygon Meshes)
Estrutura de dados utilizada na representação:
• Lista de faces c/ Arestas Explícitas [vetores normais];
• Winged-Edge.
Apresenta problemas ao
representar objetos curvos.
24
Características das Malhas Poligonais
São flexíveis. Podem ser utilizados para
representar uma ampla gama de objetos.
Apresentam limitações:
• Superfície não é suave;
• Não armazena informações sobre o interior do objeto,
nem assegura que o objeto modelado é um sólido.
Os poliedros são
descritos por suas
faces, arestas e
vértices.
D Fórmula de Euler
F3 F – A + V = 2.
a e F = 5; A = 8; V = 5
c 5–8+5=2
F1 F2 C
A
f
Atende a Fórmula de Euler,
h
b d
F5 mas não é um poliedro
F4 E
g convexo fechado.
B
27
B-Rep (Boundary Representation)
Para que um objeto atenda aos requisitos da B-Rep
são necessárias restrições adicionais.
D
• Cada aresta deve ser
F3
compartilhada por duas
faces;
a e
c
• Cada aresta deve conectar
F1 F2
dois vértices;
A C
f h • Cada vértice deve ser
F5 compartilhado por 3 arestas,
b d E
F4
B
g no mínimo.
28
B-Rep (Boundary Representation)
Fórmula de Euler
generalizada
F – A + V = 2 + H – 2G
H = Buracos nas faces;
G = Buracos no objeto.
F = 11; A = 24; V = 16
H = 1; G = 0
11–24+16 = 2+1–2.0
3=3
29
CSG (Constructive Solid Geometry)
Utiliza um conjunto de primitivas geométricas
simples: prismas, cones, cilindros, esferas, etc.
32
Conversão CSG B-Rep
A
B Percorrer a borda externa do
polígono no sentido horário
33
Conversão CSG B-Rep
A Calcular os pontos de
B
interseção entre as arestas
Costurar adequadamente as
regiões usando as interseções
calculadas.
34
Conversão CSG B-Rep
B-A
A-B
A*B
A+B
35
Sweep
Geração de objetos 3D a partir do deslizamento de
uma superfície poligonal ao longo de uma
trajetória.
diretriz
geratriz
36
Sweep
As diretrizes podem ser lineares, polylines, curvas
ou de revolução.
37
Sweep
Os processos para gerar os objetos são:
Extrusão, Revolução, Deslizamento e Loft
Extrusão
Revolução Deslizamento Loft
38
Geração de Malhas por Deslizamento
C(t) = ((a+b.cos(qt))cos(pt),
(a+b.cos(qt))sen(pt),
c.sen(qt)))
a, b, p e q são constantes
escolhidas
a) p =2, q = 5
b) p = 1, q = 7
39
Sweep
A modelagem Sweep pode combinar aspectos da
CSG e da B-Rep.
40
Enumeração da Ocupação Espacial
O objeto é decomposto em células idênticas
(voxels) arranjadas num grid regular.
41
Octrees
Octrees são uma variante hierárquica da
Enumeração da Ocupação Espacial.
Derivam das Quadtrees, uma técnica empregada
em armazenamento de imagens.
43
Representação em Memória – Octrees
A representação é similar às Quadtrees. As três
dimensões são recursivamente divididas em
octantes numerados de 1 a 8.
44
BSP-Trees
Realiza a divisão recursiva do espaço em regiões
convexas utilizando hiperplanos. O processo de
divisão é representado em uma árvore binária
chamada BSP-Tree.
45
Comparação das Representações
Requicha (1980) propôs uma lista de propriedades
desejáveis num esquema para representação de
sólidos.
Domínio
Unicidade
Precisão
Validade
Eficiência
46
Comparação das Representações
DOMÍNIO
O domínio da representação deve ser grande o
suficiente para permitir a representação de um
conjunto útil de objetos.
• Sweep é limitada;
• Enumeração Espacial, Octrees e BSP-Trees
permitem representar qualquer sólido, mas apenas
aproximações;
• Incluir arestas e superfícies curvas aumenta o
domínio de representação da B-Rep.
47
Comparação das Representações
UNICIDADE
Uma representação é única quando codifica o
sólido de apenas uma maneira.
• Somente a Enumeração Espacial e Octrees são
capazes de representar sólidos de modo único.
PRECISÃO
Permite representar um objeto sem aproximações.
• Enumeração Espacial e B-Rep permitem
representar aproximações dos objetos;
• As outras técnicas são mais precisas,
principalmente quando aumentamos a resolução.
48
Comparação das Representações
VALIDADE
As representações devem gerar objetos válidos.
49
Comparação das Representações
EFICIÊNCIA
Está diretamente relacionada com o processamento
realizado na interpretação dos objetos modelados.
t=1
x(t ) a xt bxt cxt d x
3 2
y(t ) a y t 3 by t 2 c y t d y Q(t)
z (t ) a z t 3 bz t 2 cz t d z t=0
ax ay az
b bz
Tt 3
t 2
t 1 e C x
cx
by
cy cz
d x dy d z
52
Modelagem de Curvas
M = Matriz base
Define a mistura dos elementos da Geometria.
G = Vetor de Geometria
Elementos da curva considerados na sua modelagem.
53
Modelagem de Curvas
x(t ) (t 3 m11 t 2 m21 tm31 m41 )G1 x (t 3 m12 t 2 m22 tm32 m42 )G2 x
(t 3 m13 t 2 m23 tm33 m43 )G3 x (t 3m14 t 2 m24 tm34 m44 )G4 x
T0
T1
p0 p1
56
Curvas de Hermite
P0
A Geometria de Hermite, P
considerando a componente GH x 1
x(t ) a x t bxt cx t d x
3 2
x(t ) T C x T M H GH x t 3 t 2
t 1 M H GH x
57
Curvas de Hermite
Para p0 (t = 0) e p1 (t = 1) temos:
x(t ) t 3 t 2 t 1
x(0) 0 0 0 1 M H GH x
x(1) 1 1 1 1 M H GH x
58
Curvas de Hermite
x(t ) 3t 2 2t 1 0
x(0) 0 0 1 0 M H GH x
x(1) 3 2 1 0 M H GH x
P0 0 0 0 1
P 1 1 1 1
1 G M H GHx
T0 Hx
0 0 1 0
T1 x 3 2 1 0
59
Curvas de Hermite
1
0 0 0 1 2 2 1 1
1 1 1 1 3 3 2 1
MH
0 0 1 0 0 0 1 0
3 2 1 0 1 0 0 0
Matriz de Hermite
60
Curvas de Hermite
Q(t ) x(t ) y (t ) z (t ) T M H GH
2 2 1 1 p0
3 3 2 1 p
Q(t ) t 3 t 2
t 1
0 0 1
1
0 T0
1 0 0 0 T1
p0 x0 y0 z0
p x y z
com 1 1 1 1
T0 T0 x T0 y T0 z
T1 T1 x T1 y T1 z
61
Matriz de Hermite
Q(t ) 2t 3 3t 2 1 p0 2t 3 3t 2 p1 t 3 2t 2 t T0 t 3 t 2 T1
62
Polinômios de Hermite
63
Os Vetores Tangentes
64
Efeito da Variação na Direção da Tangente (Hermite)
65
O Efeito da Magnitude do Vetor Tangente
A magnitude do vetor tangente afeta a
“agressividade” da curva de Hermite.
66
Controle Automático dos Vetores Tangentes
Ao desenhar curvas de Hermite o controle manual
das tangentes pode ser tedioso. Nestes casos um
mecanismo de controle automático é desejável.
Dados 4 pontos definidos por p0 = (x0, y0), p1 =
(x1, y1), p2 =(x2, y2) e p3 =(x3, y3) são geradas 4
tangentes necessárias à geração de 3 segmentos
de curva contínuos, assim calculadas.
Tp0 = (T0x, T0y) = (x1 – x0, y1 – y0)
Tp1 = (T1x, T1y) = (x2 – x0, y2 – y0)
Tp2 = (T2x, T2y) = (x3 – x1, y3 – y1)
Tp3 = (T3x, T3y) = (x3 – x2, y3 – y2)
67
Controle Automático dos Vetores Tangentes
Um fator de correção para o “peso” das tangentes
para ajustar a “agressividade” da curva.
A curva a seguir foi gerada com peso igual a 50%
para as tangentes.
68
Curvas de Hermite – Algoritmo
i = 0;
while(i+1 < TotMarks) { //TotMarks = número total de pontos na curva
RangeX = fabs (X[i+1] - X[i]);
RangeY = fabs (Y[i+1] - Y[i]);
if(RangeX > RangeY) Step = 1.0/RangeX;
else Step = 1.0/RangeY;
69
Curvas de Hermite – Algoritmo
else {
T1X = X[i+1] - X[i-1];
T2X = X[i+1] - X[i];
T1Y = Y[i+1] - Y[i-1];
T2Y = Y[i+1] - Y[i];
}
WG = 0.5;
for(t = 0; t <= 1; t += Step) {
x = 0.5 + (( 2*pow(t,3) -3*pow(t,2) +0*t +1) * X[i] +
(-2*pow(t,3) +3*pow(t,2) +0*t +0) * X[i+1] +
( 1*pow(t,3) -2*pow(t,2) +1*t +0) * WG*T1X +
( 1*pow(t,3) -1*pow(t,2) +0*t +0) * WG*T2X);
y = 0.5 + (( 2*pow(t,3) -3*pow(t,2) +0*t +1) * Y[i] +
(-2*pow(t,3) +3*pow(t,2) +0*t +0) * Y[i+1] +
( 1*pow(t,3) -2*pow(t,2) +1*t +0) * WG*T1Y +
( 1*pow(t,3) -1*pow(t,2) +0*t +0) * WG*T2Y);
if(t == 0) MoveTo (hdc, x, y);
else LineTo (hdc, x, y);
}
LineTo (hdc, X[i+1], Y[i+1]);
i++;
} 70
Algoritmo de De Casteljau
72
Algoritmo de De Casteljau
p1
p12
t = 0.25
p01 p02
p0 p2
73
Algoritmo de De Casteljau
p1
p02
p01 p12 t = 0.5
p0 p2
74
Algoritmo de De Casteljau
p1
p01
t = 0.75
p02 p12
p0 p2
75
Algoritmo de De Casteljau
p1
p02(t)
p0 p2
76
Algoritmo de De Casteljau
p1
Podemos dizer que a curva é
obtida pela “mistura” dos
pontos p0, p1 e p2
ponderadas por 3 funções
quadráticas.
p0 p2 b02(t) = (1 – t)2
b12(t) = 2t.(1 – t)
b22(t) = t2
Geometria!
Funções
de mistura
77
Algoritmo de De Casteljau
p0 p2
p1 p3
p02(t)
p03 p13(t)
p0
p2
t = 0.25
79
Algoritmo de De Casteljau
p1 p3
p02(t) p03
p13(t)
p0
p2
t = 0.5
80
Algoritmo de De Casteljau
p1 p3
p03
p02(t)
p13(t)
p0
p2
t = 0.75
81
Algoritmo de De Casteljau
p1 p3
p03(t)
p02(t)
p13(t)
p0
p2
82
Algoritmo de De Casteljau
n
p 0 n (t ) b j n (t ) p j Funções
j 0 de mistura
83
Curvas de Bézier e Polinômios de Bernstein
85
Matriz de Bézier
Sabendo que o polinômio de Bézier para uma curva
Q(t) definida pelos pontos p0, p1, p2 e p3 é:
Q(t) = (1 – t)3.p0 + 3t.(1 – t)2.p1 + 3t2.(1 – t).p2 + t3.p3
Matriz de Bézier 1 3 3 1 p0
3 6 3 0 p1
Q (t ) T M B G t 3 t2
t 1
3 3 0
0 p2
1 0 0 0 p3
86
Curvas de Bézier
Foram desenvolvidas pelo engenheiro Pierre
Bézier para desenhar carros para a Renault.
Devido a sua versatilidade tornaram-se
padrão nos programas de desenho.
89
Splines
A forma de uma curva spline depende da distribuição
e dos pesos dos pontos de controle. Manipulando os
pontos e os pesos ajustam-se a curvatura do spline.
Matriz B-Spline
90
Funções de Mistura para B-Spline
91
Curvas B-Spline – Algoritmo
i = 0;
while(i+3 < TotMarks) { //TotMarks = número total de pontos na curva
RangeX = fabs (X[i+2] - X[i+1]);
RangeY = fabs (Y[i+2] - Y[i+1]);
if(RangeX > RangeY) Step = 1.0/RangeX;
else Step = 1.0/RangeY;
93
Superfícies de Bézier
94
Superfícies de Bézier
A superfície de Bézier é formada pelo produto
cartesiano da funções das duas curvas geratrizes.
m n
P u , v p j, k BEZ j , m v BEZ k , n u
j 0 k 0
m! n!
C m, j C n, k
j!m j ! k!n k !
95
Superfícies de Bézier
96
Curvas e Superfícies de Bézier
Wittens, Steven. Making things with Maths. Disponível em:
http://acko.net/files/fullfrontal/fullfrontal/wdcode/online.html.
Acesso em 04/04/2014.
97