Curvas Paramétricas
Prof.Dr. Márcio Sarroglia Pinho
Introdução
A forma mais comum de representação de curvas é aquela em que uma das coordenadas é obtida em função da outra. Ou seja, y = F(x) ou x = F(y)
Esta forma de representação, porém possui alguns inconvenientes quando estamos trabalhando com modelagem geométrica. Entre estes inconvenientes estão:
Curvas paramétricas
A primeira classe de curvas paramétricas é aquela em que o comportamento da curva, ao longo do tempo, em relação a cada um dos eixos é definida por uma equação independente. A forma geral destas curvas pode ser expressa por :
x = F(u)
y = F(u)
Exemplos do uso desta formulação podem ser:
A posição vertical(y) é independente da posição horizontal(x). Ambas são funções da variável "tempo".
x = cos(t)
y = sin(t)
x = cos(t) * R + CX
y = sin(t) * R + CY
x = sen(t)
y = t * t
O uso deste tipo de técnica para a criação de curvas paramétricas é bastante útil em um processo de modelagem. Porém, não soluciona dois dos problemas levantados para as curvas da forma Y = F(X):
Composições ponderadas
Às técnicas de obtenção de equações de curvas dados seus pontos e suas derivadas, chama-se, normalmente, interpolação, aproximação ou composição ponderada. Destas técnicas destacam-se 3 formulações: curvas Bèzier, curvas Hermite e curvas Spline.
Curvas BÉZIER
Analisando a equação paramétrica da reta entre os ponto P0 e P1 chega-se a conclusão de que trata-se de uma média ponderada, ou de um balanço, entre P0 e P1 onde o peso de cada ponto é definido de forma que quanto mais um deles pese no resultado, menos o outro influencie no mesmo.
Para obter esta ponderação os pesos de P0 e de P1 podem ser expressos pela funções (para o parâmetro ponderador "t" entre 0 e 1):
Peso de P0 = 1 - T
Peso de P1 = T
Com isto a equação paramétrica da reta fica: P(t) = (1-t) * P0 + t * P1
Curvas Bèzier por 3 pontos
Caso seja preciso ponderar 3 pontos (P0, P1 e P2) gerando uma curva, a formulação é bastante semelhante:
Considerando duas retas R1 e R2, respectivamente, entre P0 e P1 e entre P1 e P2, representadas na forma paramétrica apresentada acima, é possível obter uma curva P0-P1-P2 fazendo simplesmente a ponderação entre R1 e R2 usando para isto os pesos "T" e "1 - T".
O desenvolvimento analítico desta idéia é o seguinte:
Sejam R1 e R2 as referidas retas definidas parametricamente por,
R1: (1-t) * P0 + t * P1
R2: (1-t) * P1 + t * P2
Exemplo de curva Bèzier por 3 pontos
Reaplicando novamente a idéia de ponderação tem-se a curva C1 definida pela seguinte equação:
C1 : (1-t) * R1 + t * R2
que ao ser desenvolvida dá origem a
C1(t) = (1-t)2 * P0 + 2 * (1-t) * t * P1 + t2 * P2
para t entre 0 e 1.
Curvas Bèzier por 4 pontos
A obtenção das curvas Bèzier para 4 pontos (P0-P1-P2-P3) segue o mesmo raciocínio, desta feita, ponderando duas curvas, C1->(P0-P1-P2) e C2->(P1-P2-P3). O desenvolvimento desta idéia é o seguinte, com base na figura abaixo:
Dadas as curvas C1 e C2, definidas parametricamente, em função de "t", a curva C3 pode ser expressa por:
C3 = (1-t) * C1 + t * C2
cujo desenvolvimento resulta em
C3(t) = (1-t)3 * P0 + 3 * t * (1-t)2 * P1 + 3 * t2 * (1-t) * P2 + t3 * P3
para t entre 0 e 1.
Exemplo de curva Bèzier por 4 pontos
Exemplos:
Curvas HERMITE
Tentando solucionar o problema de definição de uma curva dados seus pontos extremos e as derivadas nestes pontos surgiu a formulação de HERMITE. O desenvolvimento desta formulação vem a seguir.
Uma curva de grau 3 genérica pode ser expressa por
P(t) = a * t3 + b * t2 + c * t + d (1)
Se for necessário criar uma curva P(t), para t entre 0 e 1, que tenha os extremos nos pontos P0 e P3 e tenha como derivadas, nestes pontos, os vetores V0 e V3 respectivamente, tem-se como verdadeiras as seguintes definições:
P(0) = P0 P(1) = P3 (2)
P'(0) = V0 P'(1) = V3 (3)
P'(t) = 3 * a * t2 + 2 * b * t + c (4)
Colocando as equações (1) e (4) na forma matricial(a fim de facilitar os cálculos) teremos:
Equação (1):
Equação (4):
Objetivo agora é obter os valores das entradas da matriz-coluna, a qual dá-se o nome de matriz de coeficientes.
Para isto, substitui-se, nesta forma de representação, as afirmativas de (2) e (3) obtendo-se 4 equações.
Como queremos obter os valores de 4 incógnitas (a,b,c,d) podemos colocar as 4 equações numa notação matricial:
Isolando a matriz de coeficientes(que é o objetivo deste processo) temos a seguinte equação matricial:
À matriz-coluna, de pontos e de derivadas dá-se o nome de matriz geometria de Hermite(MGh), e à matriz 4x4, matriz de Hermite(Mh).
Logo a equação (1)
pode ser reescrita como:
Esta equação, que ao ser desenvolvida gera:
A especificação das derivadas em P0 e P3 deve ser feita através de vetores, conforme a figura abaixo.
A influência destes vetores no comportamento da curva se dá pela determinação de como a curva sai do ponto inicial e chega ao ponto final.
Exemplos de Curvas Hermite
Exemplo: https://codepen.io/liorda/pen/KrvBwr
Curvas SPLINE
Exemplos de Curvas Spline
CATMULL - ROM
Montada a partir de uma sequência de curvas Hermite. O cálculo das tangentes de forma automática a partir dos quatro pontos fornecidos pelo usuário.
Para gerar a curva, traça-se uma Hermite entre cada par de pontos.
A curva passa pelos pontos definidos pelo usuário (menos o primeiro e o último).
A tangente em cada ponto é dada por:
Vantagens
Exemplo: https://qroph.github.io/2018/07/30/smooth-paths-using-catmull-rom-splines.html
FIM.