COMPUTAÇÃO GRÁFICA E INTERFACES
Curvas Planas
Carlos Carreto
Curso de Engenharia Informática Ano lectivo 2003/2004
Escola Superior de Tecnologia e Gestão da Guarda
Sumário
◊
Introdução
◊ Curvas paramétricas
◊ Curva Bèzier
◊ Curva Hermite
◊ Curva B-Spline
◊ Curva Catmull-Rom
Introdução
Hoje em dia, uma das aplicações mais importantes da computação gráfica é sem duvida o computer-aided design (CAD). O CAD é usado extensivamente num grande número de áreas tais como engenharia aeroespacial, engenharia automóvel, engenharia náutica, engenharia civil e engenharia electrónica.
O sucesso da aplicação da computação gráfica à engenharia deve-se sobretudo ao progresso do chamado computer aided geometric design (CAGD)que proporciona a base matemática para descrever e processar forma geométricas, nomeadamente (curvas, superfícies e sólidos).
Os métodos mais promissores para descrever formas geométricas são as curvas e superfícies paramétricas. Embora estes métodos sejam em conhecidos na teoria, as suas aplicações em sistemas CAD têm sido objecto de investigação nos últimos 50 anos. Os maiores avanços conseguidos são sem duvida as representações Bèzier e B-splinede curvas e superfícies que são hoje em dia o standard da industria.
Veremos a seguir a matemática por detrás destes métodos que são de grande importância para a modelação de superfícies e sólidos.
Introdução
Formas de representar curvas Forma não paramétricas
Representação por equações onde uma das coordenadas é determinada em função da outra:
y = F(x)
Equações paramétricas
Representação por equações onde as coordenadas são obtidas em função de um parâmetro:
y = F(t) x = F(t)
Introdução
Forma não paramétrica
Exemplos de equações não paramétricas na forma explicita y = f(x)
y = mx + b
z = - (Ax + By + D) / C
Levantam problemas na hora de representar curvas com laços ou com tangentes verticais (m = ∞ na equação da recta).Por esse motivo têm um uso limitado na computação gráfica.
Introdução
Forma não paramétrica
Exemplos de equações não paramétricas na forma implícita f( x, y) = 0
Ax + By + C = 0
(x - x0)2+ (y - y0)2- r2= 0
Resolvem alguns problemas da representação explicita, mas não permitem o calculo directo das coordenadas dos pontos. São úteis em computação para determinar o exterior e o interior.
f( x, y, z) > 0 => Exterior f( x, y, z) < 0 => Interior
Introdução
Principais desvantagens da forma não paramétricas para uso em CAGD É difícil definir a equação não paramétrica de uma curva a partir de um conjunto de pontos de controlo (é difícil de manipular interactivamente).
Não permite a representação de curvas com laços.
É difícil definir a equação não paramétrica de uma curva que passe por um conjunto de pontos pré-definidos.
Introdução
Forma paramétrica
Exemplos de equações paramétricas Circunferência:
x = x0 + r cosθ y = y0 + r sinθ θ∈[0, 2π]
Segmento de recta:
x = (1-t) . x0+ t . x1
Superfícies Paramétricas x = f(u,v)
y = g(u,v) z = h(u,v) Curvas paramétricas
x = f(u) y = g(u) z = h(u)
Introdução
Principais vantagens da forma paramétricas para uso em CAGD
Resolve os problemas da forma não paramétrica.
A curva pode ser definida a partir de um conjunto de pontos de controlo (é fácil de manipular interactivamente).
A curva pode ou não passar por um conjunto de pontos pré-definidos.
A curva é aproximada por polinómios que definem as suas várias partes.
O comportamento da curva em relação a cada um dos eixos é definido por equações independentes.
As coordenadas são obtidas em função de um parâmetro.
Introdução
A curva é definida através de um conjunto de pontos de controloque influenciam a forma da curva.
Os nóssão pontos de controlo que pertencem à curva.
A curva pode ser interpolada, passando nesse caso por todos os pontos de controlo, ou pode ser aproximada, passando apenas em alguns pontos de controlo ou mesmo em nenhum.
Os pontos de controlo definem a fronteira de um polígono designado por convex hull.
Introdução
Por vezes é necessário representar a curva através de um conjunto de curvas menores ligadas entre si. Nesse caso queremos garantir a continuidade das curvas.
Continuidade de ordem zero, as curvas encontram-se num ponto
Continuidade de primeira ordem, as tangentes são coincidentes
Continuidade de segunda ordem, a “velocidade”
antes e depois é igual
Introdução
Definição de Spline
Uma Spline é uma curva composta por segmentos de curvas definidos por polinómios que satisfazem determinadas
condições de continuidade nas extremidades de cada segmento.
Uma equação é classificada de acordo com os termos que
contem. Se todos os termos são elevados a uma determinada
potência, a equação é um polinómio. Se a maior potência é um, a
equação é
linear. Se a maior potência é dois, a equação é quadrática. E a maior potência é três, a equação é cúbica.Introdução
Curvas paramétricas cúbicas
Para garantir a continuidade de primeira ordem, as curvas são aproximadas por polinómios de grau 3:
x(t) = axt3+ bxt2+ cxt + dx y(t) = ayt3+ byt2+ cyt + dy t∈[0, 1]
Forma matricial:
[ ] [ ]
=
y x
y x
y x
y x 2
3
d d
c c
b b
a a 1 t t t y x
Curvas Bèzier
Características da curva Bèzier
É definida por 4 pontos de controlo (P0, P1, P2, P3).
Passa pelos pontos extremos.
Os vectores tangentes dos pontos extremos são determinados a partir dos segmentos de recta (P0, P1) e (P2, P3) .
P0
P1
P2
P3
Curvas Bèzier
Curva Bèzier de 3 pontos
Considerem-se 3 pontos P0, P1e P2definindo os segmentos de recta (P0, P1) e (P1, P2).
Vimos que a equação da recta consiste numa média ponderada onde (1-t) é o peso de P0e t é o peso de P1: P(t) = (1-t) . P0+ t . P1
É então possível definir uma curva com os 3 pontos, fazendo a ponderação entre os dois segmentos de recta:
R1(t) = (1-t) . P0+ t . P1 R2(t) = (1-t) . P1+ t . P2 C(t) = (1-t) . R1+ t . R2
P1
Curvas Bèzier
Curva Bèzier de 4 pontos
Seguindo o mesmo raciocínio e fazendo agora a ponderação de duas curvas:
C1(t) = (1-t) . R1+ t . R2 C2(t) = (1-t) . R2+ t . R3
C3(t) = (1-t)3. P0+ 3 . t . (1-t)2. P1+ 3 . t2. (1-t) . P2+ t3. P3
P0
P1
P
P3
C1
C2
Curvas Bèzier
Curva Bèzier de 4 pontos A forma matricial fica:
[ ] [ ]
−
−
−
=
3 2 1 0 2
3
P P P P 0 0 0 1
0 0 3 3
0 3 6 3
1 3 3 1 - 1 t t t y x
Curvas Bèzier
Vantagens
É fácil de construir.
Os vectores tangentes são definidos automaticamente pelos segmentos de recta.
Desvantagens
Não garante, de forma automática, a continuidade entre os segmentos de curvas. Para que haja continuidade os últimos dois pontos do primeiro segmento e os dois primeiros pontos do segundo segmento têm que ser colineares.
Não permite controlo local, isto é, a alteração de um ponto de controlo altera toda a curva.
Curvas Hermite
Características da curva Hermite
É definida por dois pontos de controlo P0 eP1, e dois vectores tangentes (derivadas nos pontos), V0e V1.
Passa pelos dois pontos de controlo.
P0 P1
V1 V0
Curvas Hermite
Construção da curva Hermite
Sabemos que tem a forma geral P(t) = a . t3+ b . t2+ c . t + d, com t∈[0, 1].
Sabemos que passo nos pontos extremos P0e P1e as derivadas nesses pontos são V0e V1.
Então:
P’(t) = 3 . a . t2+ 2 . b . t + c
P(0) = P0, P(1) = P1, P’(0) = V0, P’(1) = V1 P0 P1 V1 V0
Curvas Hermite
Construção da curva Hermite
[ ]
=
d c b a 1 0 0 0
P(0)
[ ]
=
d c b a 1 1 1 1 P(1)
[ ]
=
d c b a 0 1 0 0 (0)
P'
[ ]
=
d c b a 0 1 2 3 (1) P'
Curvas Hermite
Construção da curva Hermite
As quatro incógnitas a, b, c e d podem ser determinadas resolvendo o sistema de equações:
Resolvendo em ordem aos coeficientes:
=
d c b a
0 1 2 3
0 1 0 0
1 1 1 1
1 0 0 0 (1) P'
(0) P'
P(1) P(0)
=
(1) P'
(0) P'
P(1) P(0)
0 0 0 1
0 1 0 0
1 - 2 - 3 3 -
1 1 2 - 2 d c b a
Curvas Hermite
Construção da curva Hermite Como
Fica:
[ ]
=
d c b a 1 t t t P(t) 3 2
[ ]
=
(1) P'
(0) P'
P(1) P(0)
0 0 0 1
0 1 0 0
1 - 2 - 3 3 -
1 1 2 - 2 1 t t t P(t) 3 2
Curvas Hermite
Vantagens É fácil de construir.
É adequada para aplicações onde seja útil definir a curva em função da inclinação dos vectores tangentes.
Passa nos pontos de controlo.
Desvantagens
Não garante, de forma automática, a continuidade entre os segmentos de curvas.
Para que haja continuidade, o vector de fim do primeiro segmento deve ter a mesma direcção e sentido do vector de inicio do segundo segmento.
Não permite controlo local, isto é, a alteração de um ponto de controlo altera toda a
Curvas B-Spline
Características da curva B-Spline
É definida por quatro pontos de controlo (P0, P1, P2, P3).
Não passa por nenhum dos pontos de controlo.
É um tipo de curva mais suave do que as anteriores, com continuidade de segunda ordem entre segmentos.
Curvas B-Spline
Equação matricial da curva B-Spline
[ ]
=
P P P P
0 1 4 1
0 3 0 3 -
0 3 6 - 3
1 3 - 3 1 - 1 t t t P(t)
2 2 1 0 2
3
Curvas B-Spline
Vantagens
É fácil de construir.
Garante a continuidade automaticamente.
Permite controlo local.
Desvantagens
Não passa nos pontos de controlo.
Curvas Catmull-Rom
Características da curva Catmull-Rom
É definida por quatro pontos de controlo (P0, P1, P2, P3).
É formada a partir de uma sequência de curvas Hermite, cujas tangentes são calculadas automaticamente a partir dos pontos de controlo.
É traçada uma curva Hermite a cada par de pontos.
A curva passa pelos pontos de controlo excepto pelo primeiro e último.
Curvas Catmull-Rom
Construção da curva Catmull-Rom
Dado um conjunto de pontos de controlo {P0, P1, …, Pn}, queremos a curva que passa por todos os pontos. A curva Catmull-Rom é construída com segmentos de curvas Hermite a cada par (Pi, Pi+1) de pontos de controlo, cujos respectivas tangentes são: (Pi+1– Pi-1) / 2 e (Pi+2– Pi) / 2.
Considerando a equação matricial da curva Hermite:
ou
[ ]
−
−
=
+
− +
+
2 P P2
P PP
P 0 0 0 1
0 1 0 0
1 - 2 - 3 3 -
1 1 2 - 2 1 t t t P(t)
i 2 i
1 i 1 i
1 i
i
2 3
[ ]
−
−
=
+ +
P P P P 0 0 1 0
0 1 0 0
20 0 1 2 1
2 0 1 2 1 0 0 0 0 1
0 1 0 0
1 - 2 - 3 3 -
1 1 2 - 2 1 t t t P(t)
2 i
1 i
i 1 - i 2
3
Curvas Catmull-Rom
Construção da curva Catmull-Rom
Multiplicando as duas matrizes de coeficientes obtemos a equação matricial da curva:
[ ]
=
+ +
P P P P 0 0 2 0
0 1 0 1 -
1 - 4 5 - 2
1 3 - 3 1 - 1 t t t P(t)
2 i
1 i
i 1 - i 2
3
Curvas Catmull-Rom
Construção da curva Catmull-Rom
(Pi+1– Pi-1) / 2
(Pi+2– Pi) / 2
Curvas Catmull-Rom
Vantagens
É fácil de construir.
Garante a continuidade automaticamente.
Permite controlo local.
Passa nos pontos de controlo.