desenho de construção naval manuel ventura - mar.ist.utl.pt · propriedades aritméticas...
TRANSCRIPT
Introdução à Computação Gráfica
Desenho de Construção NavalManuel Ventura
Instituto Superior TécnicoSecção Autónoma de Engenharia Naval
2007
M.Ventura 2
Sumário
• Entidades Geométricas• Transformações Geométricas 2D
– Escala– Rotação– Translação– Coordenadas homogéneas– Matriz de transformação generalizada
• Transformações Geométricas 3D• Curvas Bézier 2D
M.Ventura 3
Entidades Geométricas (1)
[ ]P x y=
Polígono
Ponto
[ ]
A A
B B
C C
D D
x yx y
ABCDx yx y
⎡ ⎤⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦
Segmento de recta
y
x
(x,y)
(xA,yA
)
(xB,yB)
(xA,yA
)
(xB,yB)(xC,yC)
(xD,yD
)
[ ] ⎥⎦
⎤⎢⎣
⎡=
BB
AA
yxyx
AB
M.Ventura 4
Entidades Geométricas (2)
VectorFamília de segmentos de recta orientados que têm todos o mesmo comprimento ou grandeza.
A A
A A
Propriedades aritméticas especiais1. Se A é um vector, então –A, é um vector de comprimento
igual, mas que aponta no sentido oposto.2. Se A é um vector então kA tem um comprimento k vezes
superior a A (Multiplicação escalar).3. Dois vectores podem ser adicionados para obter um terceiro
vector usando o método do paralelogramo ou o método origem-extremidade (Adição vectorial).
M.Ventura 5
Entidades Geométricas (3)
A
B
A+B
Método do paralelogramo AA+B
B
Método origem-extremidade
Transformações Geométricas em 2D
M.Ventura 7
Transformações Geométricas
• Transformações Primárias– Escala– Rotação– Translação
• Transformações Secundárias– Reflexão em relação à origem– Reflexão em relação a um ponto qualquer– Reflexão em relação aos eixos de referência– Reflexão em relação a uma recta
Transformações Geométricas Primárias
M.Ventura 9
Escala
• A escala é definida por
• Sob a forma matricial será
1 0
1 0
x
y
x S xy S y=⎧
⎨ =⎩
[ ] [ ]
[ ][ ]
1 1 0 0
0 0
00
x
y
Escala
Sx y x y
S
x y T
⎡ ⎤= ⎢ ⎥
⎣ ⎦=
Si > 1 => factor de ampliaçãoSi < 1 => factor de reduçãoSi = 1 => elemento neutroSi = 0 => elemento absorventeSx = Sy => escala uniformeSx = Sy => escala diferenciada
M.Ventura 10
Rotação (1)
e o ponto transformado será:
Em coordenadas polares o ponto inicial será( )( )
0
0
cossin
x ry r
αα
= ⋅⎧⎨ = ⋅⎩
( )( )
1
1
cossin
x ry r
α βα β
= ⋅ +⎧⎨ = ⋅ +⎩
( ) ( ) ( ) ( )( ) ( ) ( ) ( )
1
1
cos cos sin sins sin sin cos
x ry r co
α β α βα β α β
⎧ = ⋅ −⎡ ⎤⎣ ⎦⎨ = ⋅ +⎡ ⎤⎣ ⎦⎩
Desenvolvendo e substituindo
M.Ventura 11
Rotação (2)
O raio pode ser expresso em função das coordenadas do ponto inicial
( ) ( )0 0
cos sinx yr rα α
= =
Substituindo r na expressão anterior teremos:
( )( ) ( )
( )( ) ( )
( )( ) ( )
( )( ) ( )
0 01
0 01
cos cos sin sincos
s sin sin coscos sin
x yxsin
x yy co
α β α βα α
α β α βα α
⎧ = −⎪⎪⎨⎪ = +⎪⎩
E simplificando, teremos:( ) ( )( ) ( )
1 0 0
1 0 0
cos sinsin cos
x x yy x y
β ββ β
= −⎧⎨ = +⎩
M.Ventura 12
Rotação (3)
Na forma matricial será:
[ ] [ ] ( ) ( )( ) ( )1 1 0 0
cos sinsin cos
x y x yβ ββ β
⎡ ⎤= ⎢ ⎥−⎣ ⎦
A transformação geométrica da rotação de um ângulo éindependente do vector de posição e do raio da rotação, e é expressa pela matriz
[ ] ( ) ( )( ) ( )
cos sinsin cosR
Mβ ββ β
⎡ ⎤= ⎢ ⎥−⎣ ⎦
M.Ventura 13
Rotação (4)
A inversa de uma matriz de rotação pura, é a sua transposta
[ ] [ ]1 TR R− =
As rotações são positivas no sentido contrário ao dos ponteiros do relógio.
Quando o determinante |R|=1 a rotação diz-se pura.
Sen Cos Tang30° 1/2 √3/2 √3/345° √2/2 √2/2 160° √3/2 1/2 √3
M.Ventura 14
Translação (1)
1 0
1 0
X
Y
x x Vy y V= +⎧
⎨ = +⎩
Para manter a forma matricial e obter uma matriz independente das coordenadas da entidade a transformar, tem que se introduzir o conceito de coordenada homogénea h
Uma translação é definida por
( ) ( ) ( ), , , , , , ,1x y hx y x y h x yh h h′ ′⎛ ⎞′ ′⇔ = =⎜ ⎟
⎝ ⎠
M.Ventura 15
Translação (2)
E a transformação em forma matricial será
[ ] [ ]1 1 0 0
1 01 1 0 1
X Y
x y x yV V
⎡ ⎤⎢ ⎥= × ⎢ ⎥⎢ ⎥⎣ ⎦
A matriz de Translação é portanto definida por:
[ ]1 00 1
T
X Y
MV V
⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦
M.Ventura 16
Matrizes de Transformações 2D
Escala Rotação Translação
[ ]0
0x
T
y
SM
S⎡ ⎤
= ⎢ ⎥⎣ ⎦
[ ] ( ) ( )( ) ( )
cos sinsin cosTM
α αα α
⎡ ⎤= ⎢ ⎥−⎣ ⎦ [ ]
1 00 1T
X Y
MV V
⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦
Notar que nas transformações assim descritas, as matrizes são multiplicadas à direita ou seja
[ ] [ ] [ ]TMPP ×= 01
M.Ventura 17
Concatenação de Matrizes (1)
Uma sequência de transformações pode ser representada por uma concatenação de matrizes
[ ] [ ] [ ] [ ] [ ]1 0 1 2 3P P T T T= × × ×
[ ] [ ] 11 00 1
T T − ⎡ ⎤× = ⎢ ⎥
⎣ ⎦
• O produto de matrizes não é comutativo, logo, a ordem das transformações é relevante.
• A compatibilização de matrizes requer matrizes (3 x 3) e a utilização de coordenadas homogéneas
• A transformação inversa é expressa pela matriz inversa [ ] 1T −
[ ] [ ] [ ] [ ][ ] [ ] [ ]T
T
MPPTTTM
×=××=
01
321
M.Ventura 18
Concatenação de Matrizes (2)
Aplicações:Rotação de um ponto em torno de um centro de rotação fixodiferente da origem.
M.Ventura 19
Definição Alternativa das Matrizes
Neste caso, as matrizes são multiplicadas à esquerda, e a matriz dos pontos iniciais deve ser também transposta, ou seja
Alguns autores e alguns sistemas computacionais usam um arranjo diferente das matrizes de transformação geométrica, que são as transpostas das acima indicadas.
[ ] [ ] [ ]TT PMP 01 1×=
[ ] [ ]TTT MM =1
A ordem da multiplicação também deve ser invertida. Por exemplo, quando se pretender aplicar, por esta ordem, as transformações [A], [B] e [C], a matriz de transformação total será:
[ ] [ ] [ ] [ ]ABCMT ××=1
M.Ventura 20
Matrizes de Transformação 2D em Coordenadas Homogéneas
Escala
Rotação
Translação[ ]0 0
0 00 0 1
X
T Y
SM S
⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦
[ ]( ) ( )( ) ( )
cos sin 0sin cos 00 0 1
TM
α αα α
⎡ ⎤⎢ ⎥= −⎢ ⎥⎢ ⎥⎣ ⎦
[ ]1 0 00 1 0
1T
X Y
MV V
⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦
M.Ventura 21
Compatibilização de Matrizes (1)
[ ]
• As coordenadas cartesianas ordinárias (x,y) são substituídas pelas coordenadas homogéneas (x,y,1).
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
1111
22
11
nn yx
yxyx
CMM
• Os pontos, segmentos e polígonos são representados em coordenadas homogéneas, respectivamente, por uma matriz de dimensões (1x3), (2x3) e (Nx3).
M.Ventura 22
Compatibilização de Matrizes (2)
[ ]
• A matriz de transformação geométrica em 2D deverá ser representada no seu formato generalizado com as dimensão de (3x3):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
100
fedcba
T• Os elementos da diagonal a e d
correspondem a transformações por variação de escala
• Os elementos a, b, c e d, reflectem a aplicação de rotações
• Os elementos e e f traduzem translações
M.Ventura 23
Exercício: Ordem de Concatenação
• Aplicação de duas transformações geométricas sobre um mesmo polígono, [ABC], impondo-se duas sequência distintas de execução.
A
x1 2 3 4
1
2
3
4
C
B
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
321311
ABC
( ) ( )31801 =⋅−= YO TTranslRotTransf
( ) ( )18032 −⋅== OY RotTTranslTransf
M.Ventura 24
Resolução: Ordem de Concatenação (1)
[ ]
• Rotação do triângulo em torno da origem de 180° seguido de translação em Y de 3 unidades:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
−=
130010001
130010001
100010001
T
[ ]1 1 1 1 0 0 1 2 1
ABC 3 1 1 0 1 0 3 2 12 3 1 0 3 1 2 0 1
t
⎡ ⎤− −⎡ ⎤ ⎡ ⎤⎢ ⎥⎢ ⎥ ⎢ ⎥= ⋅ − = −⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥−⎣ ⎦ ⎣ ⎦⎣ ⎦
( ) ( )1 180 3YOTransf Rot Transl T= − ⋅ =
M.Ventura 25
Resolução: Ordem de Concatenação (1)
• Rotação do triângulo em torno da origem de 180° seguido de translação em Y de 3 unidades:
M.Ventura 26
Resolução: Ordem de Concatenação (2)
[ ]
• Translação de [ABC] segundo Y de 3 unidades, seguido de uma rotação em torno da origem de 180°:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−
−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
−⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
130010001
100010001
130010001
T
[ ]1 1 1 1 0 0 1 4 1
ABC 3 1 1 0 1 0 3 4 12 3 1 0 3 1 2 6 1
t
⎡ ⎤− − −⎡ ⎤ ⎡ ⎤⎢ ⎥⎢ ⎥ ⎢ ⎥= ⋅ − = − −⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥− − −⎣ ⎦ ⎣ ⎦⎣ ⎦
( ) ( )18032 −⋅== OY RotTTranslTransf
M.Ventura 27
Resolução: Ordem de Concatenação (2)
• Translação de [ABC] segundo Y de 3 unidades, seguido de uma rotação em torno da origem de 180°:
Transformações Geométricas Secundárias
M.Ventura 29
Transformações Secundárias
• As Transformações Secundárias são aquelas que podem ser consideradas como casos particulares ou aplicações compostas de transformações primárias
• Alguns exemplos:– Reflexão em torno da origem (0,0)– Reflexão em torno de um ponto qualquer– Reflexão em torno de um eixo de referência– Reflexão em torno de uma recta qualquer passando pela origem
M.Ventura 30
Reflexão em Relação à Origem
0t 0x =-xPt
x
P
y =-yt 0
0y[ ]
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
−=
100010001
TM
A matriz de transformação associada è Reflexão em relação à origem (0,0) é a seguinte:
Note-se que corresponde a efectuar uma rotação de 180°(no plano) em torno da origem.
[ ]( ) ( )( ) ( )
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−=
1000180cos180sin0180sin180cos
TM
M.Ventura 31
Reflexão em Relação a um Ponto Genérico
[ ] [ ][ ][ ][ ] 101−= TRTPP REF
• Translação desse ponto para a origem
• Reflexão em relação à origem
• Translação inversa
A Reflexão em relação a um ponto qualquer pode ser obtida em três passos:
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−=
1010001
YX PPT
A translação é definida pelas coordenadas do ponto genérico
M.Ventura 32
Reflexão em Relação a um Eixo
Em relação ao eixo dos XX (y=0)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
100010001
(x=0)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
100010001
Em relação ao eixo dos YY
Note-se que corresponde a efectuar uma rotação de 180° no espaço em torno do eixo.
M.Ventura 33
Reflexão em Relação a uma Recta que passa pela Origem
tP0t
y=x
x=y
y
x
0P
[ ] [ ][ ][ ][ ]454501 +−= RRRPP xx
Por simples análise visual se pode deduzir que a matriz de transformação de um ponto P em relação à recta bissectriz do 1º quadrante (Y=X) será:
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡==
100001010
xyR
Podemos obter o mesmo resultado decompondo a transformação desejada numa série de transformações elementares:
M.Ventura 34
Notas sobre Transformações
• A Reflexão e a Escala só envolvem elementos da diagonal• Os elementos fora da diagonal provocam um efeito de
shearing.• A origem (0,0) é invariante (Não é alterada pelas
transformações)
• A matriz identidade é o elemento neutro das transformações geométricas, não altera os pontos iniciais.
[ ] [ ] [ ]001
100010001
PPP =⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡×=
M.Ventura 35
Operações com Matrizes em Excel
=mmult(F5:H7;N13:P15)
=minverse(F5:H7)
=mdeterm(F5:H7)
=transpose(F5:H7)
<ctrl+shift+enter>
radians()
sin(), cos()
sqrt()
Funções necessárias para calcular transformações geométricas numa folha de cálculo:
M.Ventura 36
Exercício de aplicação (1)
• Deduza uma matriz que transforme o triângulo
• [A1 A2 A3] em [B1 B2 B3], sem utilizar rotações:
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
222111
AAA 321
A
1 2 3
1
2
3
1
A2 A3
x
y
-1
-2
-3
1B B
B3
2
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−−
=221211
BBB 321
M.Ventura 37
Exercício de aplicação (1) - Resolução
• Uma solução possível é aplicar uma reflexão em torno de xx, seguido de uma reflexão em torno da recta y=-x :
xyxx reflreflTransf −=⋅=
[ ] ⎥⎦
⎤⎢⎣
⎡ −=⎥
⎦
⎤⎢⎣
⎡−
−⋅⎥⎦
⎤⎢⎣
⎡−
=0110
0110
1001
T
M.Ventura 38
Exercício de aplicação (1) - Resolução
• Representação geométrica:
A
y
x1 2 3
1
2
3
1
2A 3A
-1
-2
-3
1b
3b2b-3
-1
-2
2
1
3
y
B3
B11
B22 3 x
y=-x
M.Ventura 39
Exercício de aplicação (2)
• Variação de escala segundo x de um factor 2 do triângulo [ABC], mantendo fixo o vértice (2,3).
1 2 3 4
1
2
3
4
y
5
5 6
A B
C
x
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
533632
ABC
M.Ventura 40
Exercício de aplicação (2) - Resolução
1. Aplicar uma translação ao triângulo de modo a colocar o vértice A(2,3) na origem (0,0)
2. Aplicar a variação de escala pretendida (alongamento de 2 vezes apenas segundo X)
3. Aplicar uma translação ao triângulo transformado de modo a reposicionar o seu vértice A em (2,3).
M.Ventura 41
Exercício de aplicação (2) - Resolução
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−=
102010002
132010001
100010002
132010001
T
[ ] [ ] [ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=⋅=
1541310132
102010002
153136132
ABCABC Tt
Transf = Transl(Tx=-2, Ty=-3) Escala(Sx=2) Transl(Tx=2, Ty=3)
M.Ventura 42
Exercício de aplicação (2) - Resolução
• Representação geométrica:
A
1
1
2
5
4
3
y
62 3 4 5 7 8 9 10 x
Ct
t Bt
M.Ventura 43
Exercício proposto
• Indique qual a sequência de transformações necessárias para transformar o triângulo [ABC] em [A’B’C’] :– Calcule a matriz concatenada.– Obtenha a matriz de coordenadas final– Represente geometricamente.
[ ] [ ]ABC A'B'C'=⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥
=−−−
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥
1 13 12 3
2 22 44 3
M.Ventura 44
Exercícios
M.Ventura 45
Exercícios
M.Ventura 46
Exercícios
M.Ventura 47
Exercícios
M.Ventura 48
Exercícios
M.Ventura 49
Exercícios
ATENÇÃO!
Multiplicação à esquerda!
(Matrizes transpostas)
M.Ventura 50
Exercícios
M.Ventura 51
Exercícios
M.Ventura 52
Exercícios
ATENÇÃO!
Multiplicação à esquerda!
(Matrizes transpostas)
M.Ventura 53
Exercícios
M.Ventura 54
Exercícios
M.Ventura 55
Exercícios
ATENÇÃO!
Multiplicação à esquerda!
(Matrizes transpostas)
M.Ventura 56
Exercícios
M.Ventura 57
Exercícios
M.Ventura 58
Exercícios
M.Ventura 59
Exercícios
Transformações Geométricas em 3D
Manuel Ventura
M.Ventura 61
Matrizes de Escala e Translação em 3D
EscalaTranslação
[ ]
0 0 00 0 00 0 00 0 0 1
x
y
T
z
SS
MS
⎡ ⎤⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦
[ ]
1 0 0 00 1 0 00 0 1 0
1
T
x y z
M
V V V
⎡ ⎤⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦
M.Ventura 62
Matrizes de Rotação em 3D
Rotação de α em torno de XX
[ ] ( ) ( )( ) ( )
1 0 0 00 cos sin 00 sin cos 00 0 0 1
TMα αα α
⎡ ⎤⎢ ⎥⎢ ⎥=
−⎢ ⎥⎢ ⎥⎣ ⎦
Rotação de β em torno de YY
[ ]
( ) ( )
( ) ( )
cos 0 sin 00 1 0 0
sin 0 cos 00 0 0 1
TM
β β
β β
−⎡ ⎤⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦
Rotação de γ em torno de ZZ
[ ]
( ) ( )( ) ( )
cos sin 0 0sin cos 0 00 0 1 00 0 0 1
TM
γ γγ γ
⎡ ⎤⎢ ⎥−⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦
Regra dos Três Dedos da Mão direita
M.Ventura 63
Bibliografia
• Rogers, David (1998), “Mathematical Elements for ComputerGraphics”, McGraw-Hill.