curvas e superfícies paramétricas - autenticação · segmento de curva para uma curva cúbica,...

80
©João Madeiras Pereira & IST Curvas e Superfícies Paramétricas Prof. João Madeiras Pereira Instituto Superior Técnico

Upload: vucong

Post on 08-Dec-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curvas e Superfícies Paramétricas

Prof. João Madeiras Pereira Instituto Superior Técnico

Page 2: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

1ª versão: Novembro 2001 2ª versão: Novembro 2002 3ª versão: Outubro 2005

Bibliografia:

“Computer Graphics: Principles and Practice”, Foley, van Dam, Feiner and Hughes; Capítulo 11

“3D Computer Graphics”, A. Watt, Capítulo 6

Page 3: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

1.Introdução

Modelação Sólida -> Representação de um objecto através da composição de objectos primitivos através de operações booleanas (CSG);

Modelação da Fronteira (B-Rep)-> Representação pela descrição paramétrica da sua superfície;

Page 4: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Modelação da Fronteira

Superfícies Paramétricas: fácil de modelar objectos deformáveis;

Malha de Facetas: Menos versátil;

Page 5: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Representações

Analítica -> Espaço Objecto Paramétrica -> Espaço Paramétrico

  Espaço Objecto: Coordenadas cartesianas.

 Espaço Paramétrico: Conjunto dos espaços bidimensionais (x, u) e (y,u) resultantes da decomposição da curva nas suas componentes cartesianas (variáveis dependentes), traduzidas através de um mesmo parâmetro u (variável independente).

Page 6: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Representação Analítica

Explícita: x = x; y = f(x); Desvantagens:   Representação dependente do sistema de coordenadas adoptado

 Dificuldade de representação de declives infinitos   Tratamento computacional complicado   Dificuldade de representar curvas fechadas (pelo menos explicitamente)   Informação adicional para definir os limites da curva

Implícita: f(x, y) = 0;  Mais flexível  Função de teste  Não determina pontos

Page 7: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Representação Paramétrica

Page 8: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Exemplo

Curva polinomial paramétrica:

Page 9: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Vantagens

 Mais níveis de liberdade para controlo da forma da curva (mais parâmetros a concretizar).

Exemplo: no caso anterior, uma curva cúbica tem 12 parâmetros

  As expressões paramétricas suportam declives infinitos, curvas fechadas ou multi-valor.

dy/dx = (dy/du) / (dx/du) dy/dx = infinito => dx/du = 0

Page 10: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Vantagens (cont.)

  Elementos geométricos definidos parametricamente são inerentemente limitados (0 <= u <= 1).

  As expressões paramétricas são facilmente traduzidas na forma de vectores e matrizes.

  Utilização de um só modelo matemático para representar qualquer curva ou superfície.

Page 11: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Exemplos

a) Linha Recta (problema dos declives infinitos) x = a + l*u y = b + m*u z = c + n *u

Z

X

Y The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file

The image cannot be displayed. Your computer may not have enough memory to open the image, or

xp

yp

zp

u=0

u=1

ANALITICA:

Z = f (x,y) ????

PARAMETRICA:

x = xp

y = yp

z = zpu 0≤u ≤ 1

Page 12: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Exemplos (cont.)

Curva Helicoidal ao longo de zz' (funções multi-valor)

x = a*cos (Ku) y = a*sin (Ku) z = b*u

Page 13: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva polinomial paramétrica

Polinómio de grau k=2: pouca flexibilidade na definição da forma;

Polinómio de grau k> 3: demasiado número de coeficientes e formas com oscilações.

Page 14: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Definição de uma curva paramétrica

  A definição natural de uma curva é feita através da imposição de condições de posição, tangência, curvatura e de um conjunto de pontos denominados pontos de controlo.

  Interpolação versus aproximação   Segmentos de curva e pontos de junção   Suavidade (smoothness) – derivadas contínuas nos pontos de

junção   Controlo local –alteração de um ponto de controlo deve-se

reflectir localmente (porção de curva) e não em toda a curva melhor interactividade na definição da curva

Page 15: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva polinomial cúbica paramétrica

Page 16: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva polinomial cúbica paramétrica (cont.)

Page 17: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Uma Curva polinomial cúbica paramétrica •  Caso particular (pouco utilizado): curva interpola 4 pontos de

controlo, p0, p1, p2, e p3. Considere-se o intervalo de u igualmente espaçado: u = 0, 1/3, 2/3, 1

Page 18: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Uma Curva polinomial cúbica paramétrica (cont.)

Page 19: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Mistura

•  M – Matriz base: transforma os constrangimentos geométricos (condições fronteira) nos coeficientes polinomiais e caracteriza a curva.

•  p(u) = uT c = uT M p •  p(u) = b(u) p com b(u) = uT M •  b(u) matriz com as funções de mistura polinomiais

Page 20: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Mistura (cont.)

No caso em estudo:

Page 21: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Mistura (cont.)

•  Problemas: •  Os zeros das funções de mistura situam-se no intervalo

[0, 1] logo pouco suave e propensa a oscilações (mais grave em polinómios de maior grau)

•  Não tem continuidade de derivada nas junções

•  Conclusão: curva pouco utilizada em CG

Page 22: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Superfícies Paramétricas

•  Retalho (patch) é um troço de superfície com u e v definido no domínio (0,1).

• Manta de retalhos são usadas para modelar as fronteiras de objectos 3D complexos:

Page 23: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Tipos de Curvas

Com diferentes Funções de Mistura e diferentes Coeficientes Geométricos constroem-se curvas do tipo:

  HERMITE: Definidas pela posição e vectores tangentes dos pontos extremos;   BEZIER: Definidas pela posição dos pontos extremos e utilizando dois pontos adicionais para definir indirectamente as tangentes à curva nas suas extremidades;  B-SPLINE: Constrói uma curva aproximada aos pontos extremos mas sem passar por eles. Este grau de liberdade permite a obtenção de continuidade à primeira e segunda derivadas nos pontos de junção entre segmentos de curva.

Page 24: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva Hermite

Coeficientes Geométricos: p(0), p(1), pu(0), pu(1):

Funções de Mistura: F1(u) = (2u3 - 3u2 + 1) F2(u) = (-2u3 + 3u2) F3(u) = (u3 - 2u2 + u) F4(u) = (u3 - u2)

p(u) = F1.p(0) + F2.p(1) + F3.p´(0) + F4.p´(1)

Page 25: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva Hermite: definição

p(u) = uT c = uT MH p

Page 26: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções Mistura Hermite

F1 1

0 1

1

0 1

0,2

-0,2

F2

F3 F4

0 1

0 1

Page 27: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva Bézier: Critérios

 As funções devem interpolar a curva nos pontos inicial e final do

polígono de controlo (controlo directo dos extremos da curva)

 Os vectores tangentes nos extremos devem ser dados respectivamente

por (p1 – p0) e (pn - p(n-1)). (controlo directo dos declives da curva

nos pontos extremos).

 Deve ser possível a generalização da propriedade anterior às derivadas

de grau superior. A segunda derivada em po depende de (p0,p1,p2) e

assim sucessivamente. (permite o controlo "ilimitado" de continuidade

nas junções entre troços de curva).

 As funções devem ter um comportamento simétrico com respeito a (u)

e (1 - u). Esta propriedade faz com que seja possível inverter a ordem

dos vértices do polígono de controlo sem que haja alteração da forma

da curva aproximada.

Page 28: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva Bézier cúbica: definição

Page 29: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Mistura (Bezier cúbica)

Funções de Mistura: B2,3

B0,3

B1,3

1

1 u 0

B3,3

Grau da curva depende do número de Pontos de Controlo: (n+1) pontos de controlo -> Bi,n(u) = polinómios de grau n

Exemplo de curvas de Bézier cúbica (grau n=3)

Page 30: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curvas de Bézier de grau n

•  Curvas aproximadas •  Curva Bezier de grau n

pi: Coeficientes geométricos ou

pontos de controlo {p0, p1, p2, ..., pn} ou polígono característico

Funções de Mistura: polinómios de Bernstein

Page 31: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

a) Para u = 0: B0,n (u) é sempre igual `a unidade. Bi,n (u) é sempre nula quando i <> 0. Confirma-se que o primeiro ponto de controlo determina o primeiro extremo da curva.

b) Para u = 1 Bn,n (u) é sempre unitária Bi,n (u) é sempre nula quando i <> n. Confirma-se que o ultimo ponto de controlo determina o segundo extremo da curva.

c) Cada ponto pi tem a sua máxima influência para a definição da curva (máximos das funções de mistura) quando: u = i/n

Invariantes

Page 32: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Continuidade C1 e G1

•  Construção de uma curva mais complicada (vários pts. de controlo) à custa de várias secções Bézier.

•  Seja pn-1 e pn de uma secção e q0 e q1 da próxima secção. Para obter G1:

Os pts q0 e q1 têm de ser colineares com pn-1 e pn (e claro que pn = q0) q1 = pn + K (pn – pn-1)

Page 33: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Continuidade C1 e G1 (cont.)

Page 34: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curvas Fechadas

1) Curvas fechadas com continuidade de posição (curvas G0).

p0 = pn

2) Com continuidade de posição e declive (curvas C1).

( p1 - p0 ) colinear com ( pn - pn-1)

Page 35: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Propriedades

•  Os extremos coincidem com os vértices extremos do polígono de controlo

•  Os declives nos extremos, são dados directamente pelos lados extremos do polígono de controlo

•  Uma curva Bézier está sempre contida no polígono convexo definido pelos seus pontos de controlo.

•  Se não forem utilizados polinómios de grau muito elevado, a curva segue razoavelmente o andamento do polígono de controlo, sem oscilações indesejadas.

•  A definição da curva é feita por mera enumeração dos pontos de controlo, não exigindo a introdução de declives (interface simples).

Page 36: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Desvantagens

•  O grau do polinómio depende do número de pontos de controlo e para graus muito elevados surgem oscilações.

•  Não é possível o controlo local (a movimentação de um ponto de controlo provoca o recalcular de toda a curva, pois a correspondente função de mistura é não-nula no intervalo ]0,1[).

Page 37: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

B-Splines

•  Curva aproximada •  Quaisquer número de pts de controlo: (m+1) •  O grau da curva não é determinado pelos número de pts de

controlo mas sim por K (ordem da curva): grau da curva = K –1 (curva cúbica implica K = 4)

•  A curva B-spline é uma série de segmentos de curva Qi (u) (no contexto da curva o parâmetro u é global; no contexto de um segmento u é local)

•  Cada Qi é determinado (ou definido) por K pts de controlo •  Constrangimento C2 ou G2 nos pts de ligação dos Qi

Page 38: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Segmento de Curva

Para uma curva cúbica, um segmento de curva é dado por:

i é o número do segmento

Representa apenas o segmento Qi

u varia no intervalo [0, 1] – parâmetro local

Page 39: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Base num Segmento de Curva (local)

No contexto das B-splines, a função de mistura da curva Bézier assume normalmente a designação de função de base

Page 40: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Número de segmentos de curva

• Considere-se uma curva B-Spline com m+1 pts de controlo e ordem K: o número de segmentos de curva Qi é dado por:

• Curva cúbica B-Spline:  Cada Qi determinado por 4 pts de cntrl – propriedade de controlo local: alterar 1 pt de cntrl influencia apenas 4 segmentos de curva  m – 2 segmentos de curva que convencionalmente se designarão por:

Por convenção:

Page 41: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Número de Segmentos de Curva (cont.) Exemplo: curva cúbica com 6 pts de cntrl (m=5 e K=4)

Temos 3 Qi e:

Page 42: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Exemplo

Page 43: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Controlo Local

Altera-se P4: “puxa” Q5 e afecta, em menor extensão Q4.

Q3 não se altera!

Page 44: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Segmentos de Curva e nós de ligação •  No espaço paramétrico global temos nós ou knots que

representam os valores de u onde os segmentos Qi têm os seus extremos. Também são designados por nós de ligação uma vez que são os valores de u onde os seg. de curva se unem

•  Por definição um Qi é definido entre 2 nós consecutivos: Qi define um intervalo paramétrico ui ≤ u ≤ ui+1 (espaço de u global)

•  B-Spline uniforme: assume-se que esses nós têm valores inteiros e que o espaçamento entre nós é igual a 1 (0, 1, 2,...)

Page 45: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Função de Base da B-Spline Cúbica

•  Cada função de base “cobre” K intervalos •  Curva B-Spline ordem 4: cada função de base é, ela própria,

uma B-Spline cúbica, constituída por 4 segmentos, e simétrica

Page 46: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Funções de Base de uma B-Spline Cúbica Uniforme

Exemplo: curva cúbica com 6 pts de cntrl (m=5 e K=4) Nós uniformemente espaçados (vector de nós uniforme): cada função

de base é uma cópia transladada de um nó (funções de base periódicas).

Número total de nós: 10 Uma curva B-Spline é calculada por:

Page 47: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Número de Knots

•  Cada função de mistura Bi é suportada no intervalo ui - > ui+K

•  Temos m+1 funções de mistura; •  Logo:

m + 1 + k knots (u0 -> um+k)

Número de nós: nº de pts de cntrl + ordem da curva

Page 48: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Intervalo do parâmetro u global

Mas só interessa para a definição da curva o espaço paramétrico [3, 6]

Page 49: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Intervalo do parâmetro u global

•  O parâmetro u global, no contexto da curva B-Spline Q(u), deve variar entre:

•  Então uma B-Spline é definida por

•  No caso de uma B-Spline cúbica uniforme o valor mínimo de u é sempre 3 (ou u3 no caso de uma não-uniforme)

Page 50: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Cáculo do Segmento de Curva da B-Spline cúbica

•  Em uK-1 ≤ u ≤ um+1, verifica-se que para valores de u que não são nós, estão sempre activas K funções de base e somam a unidade. Nos nós, só existem K-1 funções não-nulas e que somam a unidade. Quando se atinge um nó ui, uma função de base anula-se e “nasce” outra.

•  Mas Q(u) também pode ser o somatório dos vários Qi •  Qi define um intervalo paramétrico ui ≤ u ≤ ui+1 •  Qi é determinado pelas funções de base Bi-3, Bi-2, Bi-1 e Bi

Page 51: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Cáculo do Segmento de Curva da B-Spline cúbica (cont.)

Calcula um simples segmento de curva a partir das 4 funções de base no intervalo 0≤ u ≤ 1 (local).

O cálculo de Q3 (3≤ u ≤ 4) implicaria o cálculo das funções acima, substituindo u por (u-3).

No exemplo anterior (6 nós, m=5) ter-se-ia:

Q(u) = Q3 + Q4 + Q5

Page 52: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Curva B-Spline

Numa B-Spline uniforme:

Page 53: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Cálculo da função de base B-Spline cúbica uniforme

Esta definição calcula um simples segmento de curva a partir das 4 funções de base no intervalo 0≤ u ≤ 1 (local). Não define a função de base cúbica B0, a qual consiste de 4 segmentos no intervalo 0≤ u ≤ 4.

Page 54: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Cálculo da função de base B-Spline cúbica uniforme (cont.)

Usando as equações do acetato anterior, e transladando cada segmento cúbico de 0, 1, 2 e 3 em u, obtém-se:

Se se usar a fórmula recursiva Cox-deBoor para a derivação das funções de mistura, as quais geram curvas B-Splines uniformes ou não-uniformes de grau K, o resultado é exactamente o mesmo.

Page 55: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Fórmula Recursiva Cox-deBoor

Método alternativo para o cálculo das funções de mistura de curvas B-Spline, grau K, uniformes ou não-uniformes:

Page 56: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Múltiplos Pontos de Controlo

Três P5 coincidentes: 8 pts de controlo, 6 Qi, 3≤ u ≤ 8

Q7 (7 ≤ u ≤ 8) determinado por P4P5P5P5. Em u=8 interpola P5

Page 57: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Múltiplos Pontos de Controlo Interiores

Perda de continuidade a)  ponto duplo -G1

b)  Ponto triplo - G0

Page 58: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Múltiplos Pontos de Controlo Interiores (cont.)

Page 59: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

B-Splines não-uniformes

Vantagens:  Se a continuidade é reduzida para C0, então a curva interpola um pt de controlo, mas sem aquele inconveniente de ter seg. recta em ambos os lados do pt de controlo interpolado  Pts extremos interpolados mas sem introduzir segmentos lineares

Page 60: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Vector de Knots Não Uniforme

Define-se que os knots dos extremos da curva têm multiplicidade k.

Para k=4 (grau 3) temos o vector de knots: T=(0, 0, 0, 0, 1, ...., n-1, n, n, n,n)

Quando 2 knots são idênticos a curva reduz-se a um ponto.

Page 61: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

B-Splines não-uniformes Vector de knots: [0, 0, 0, 0, 1, 2, 3, 3, 3, 3]; 6 pts ctrl; 3 seg. curva 9 segmentos, Q0 a Q8. Mas a curva reduz-se a

Q3, Q4 e Q5 em que 0 ≤ u ≤ 3 (u3 ≤ u ≤ u6) . Nos extremos, todas

as funções de base são nulas, excepto B0 e B5, ambas

unitárias, o que faz com que a curva interpole P0 e P5

Page 62: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

B-Splines não-uniformes

9 pts de cntl; 13 nós

Page 63: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Efeito da multiplicidade numa função de base B-Spline

b) Multiplicidade 2: [0, 1, 1, 2, 3]

a)  Multiplicidade 1: [0, 1, 2, 3, 4]

c) Multiplicidade 3: [0, 1, 1, 1, 2]

d) Multiplicidade 4: [0, 1, 1, 1, 1]

Page 64: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Transformar B-Spline em Bézier

•  Curva cúbica com 4 pts de cntrl •  Interpola os extremos •  Logo:

vector knots = [0, 0, 0,0, 1, 1, 1, 1] •  Curva com apenas um segmento de curva Q, que

interpola os pts de cntrl extremos e cujas funções de base são as funções de mistura da curva cúbica de Bézier

Page 65: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Transformar B-Spline em Bézier

Page 66: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Propriedades

•  Novos knots podem ser inseridos no troço que necessita de refinamento;

•  Aumentar a multiplicidade m de um knot reduz a continuidade da paramétrica k-m-1;

•  Um knot interior de multiplicidade k transforma uma B-spline em duas B-Splines distintas cada um com o seu conjunto de pontos de controlo.

Page 67: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Multiplicidade em pontos interiores (1)

Page 68: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Multiplicidade em pontos interiores (2)

Page 69: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Multiplicidade em pontos interiores (3)

Page 70: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Multiplicidade em pontos interiores (4)

Page 71: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

NURBS A curva Rational cúbica é dada pelas seguintes razões:

Onde X(u), Y(u), Z(u) e W(u) são curvas cúbicas polinomiais cujos pts. de ctrl são definidos em coordenadas homogéneas. Curva no espaço homogéneo: Q(u) = [X(u) Y(u) Z(u) W(u)] Para passar para o espaço cartesiano divide-se por W(u)

Page 72: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

NURBS

•  2 vantagens: •  Invariantes após a aplicação de transformações

geométricas simples e a transformação perspectiva (as não racionais “alteram” com a transformação perspectiva). Isto significa que a transformação perspectiva é aplicada apenas aos pts de controlo, os quais podem ser usados para gerar a curva que representa a transf. Perspectiva da curva original.

•  Definir com precisão secções cónicas (polinómios quadráticos)

Page 73: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Superfícies Paramétricas

•  Definir pontos na superfície em termos de dois parâmetros (u, v) •  Caso mais simples: interpolação bilinear

s

t

s

x(s,t)

P0,0

P1,0

P1,1 P0,1

x(s,0)

x(s,1)

Page 74: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Bezier Patches

•  As with Bezier curves, Bin(u) and Bj

m(v) are the Bernstein polynomials of degree n and m respectively

–  Need 4x4=16 control points, Pi,j

•  Most frequently, use n=m=3: cubic Bezier patch

Page 75: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Evaluators em OpenGL void glMap2f(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLfloat *points)

Target: GL_MAP2_VERTEX_3, GL_MAP2_VERTEX_4 ustride: Especifica o número de floats ou de doubles entre o ínicio da posição do ponto de controlo Pij e o ínicio da posição do ponto de controlo P(i+1)j no array de pts introduzidos pelo utilizador.

vstride: Especifica o número de floats ou de doubles entre o ínicio da posição do ponto de controlo Pij e o ínicio da posição do ponto de controlo Pi(j+1) no array de pts introduzidos pelo utilizador.

i e j representam os índices de u e v dos pts de controlo: indice i corresponde à função Bi(u) e o índice j corresponde à função de base Bj(v).Este esquema de endereçamento permite que seja especificado um array de pts cujo número seja bastante superior ao número de pts de controlo necessários para definir a superfície, ou seja contém potenciais pontos de controlos. Utilizando um ponteiro e os dois strides, o utilizador pode especificar um sub-array rectangular de mxn pts de controlo. A única restrição é que os potenciais pts de controlo estejam em posições adjacentes na memória.

EXEMPLO:

GLfloat array[100][100][3]; array de potenciais pts de controlo

Utilizar para uma superfície cúbica de Bézier um array de pts de controlo a começar pelo pt na posição (20,30) do aray. Se é cúbica, isto significaria que a API utilizaria um array de 4 x 4 pontos. Assim, indicar-se-ia:

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 100*3, 4, 0, 1, 3, 4, &array[20][30][0])

Page 76: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

NURBS em OpenGL

• Ver exemplo do livro: surface.c •  Tal como uma Textura uma Nurbs é um

objecto que pode ser criado (gluNewNurbsRenderer), destruído (gluDeleteNurbsRenderer) e especificado (gluNurbsCurve, gluNurbsSurface).

•  Podem ainda ser criada uma parte de uma paramétrica (gluBeginTrim, gluPwlCurve, gluNurbsCurve, gluEndTrim).

Page 77: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Especificação de Curva

Tem que se definir: –  Nº de knots (= nº de pontos de controlo + ordem da

curva) – Array de knots (com valores crescentes ou não: curva uniforme

ou não-uniforme) – Apontador para array de pontos de controlo; – Número de floats a percorrer no array de pontos de controlo de

modo de modo a aceder ao ponto de controlo seguinte – Ordem da curva (= ordem do polinómio + 1); – Tipo de avaliação da curva (por exemplo,

GL_MAP1_VERTEX_3 or GL_MAP1_COLOR_4).

Page 78: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

Parâmetros

Pode controlar-se: •  A tolerância de amostragem, em quadrículas; •  O modo de desenho (fill, fronteira do retalho,

fronteira do polígono); •  Modo de amostragem (comprimento em

quadrículas, distância da superfície ao polígono, comprimento em coordenadas u, v);

•  No 3º modo, de amostragem, tem que se fornecer o passo em u e o passo em v.

Page 79: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

GLU_FILL

Page 80: Curvas e Superfícies Paramétricas - Autenticação · Segmento de Curva Para uma curva cúbica, um segmento de curva é dado por: i é o número do segmento Representa apenas o

©João Madeiras Pereira & IST

GLU_OUTLINE_POLYGON