FUNDAMENTOS MATEMÁTICOS PARA

COMPUTAÇÃO GRÁFICA

 

DISTÂNCIA ENTRE 2 PONTOS NO PLANO

Sejam os ponto P1 (x1, y1) e P2 (x2, y2), a distância "d" entre P1 e P2 pode ser calculada por:

EQUAÇÃO DA RETA

Dados os pontos P1 (x1, y1) e P2 (x2, y2) as principais formas da equação da reta suporte do segmento que liga P1 e P2 são as seguinte:

Forma explícita

Forma explícita

Forma Implícita

Forma Implícita

A = Y1 - Y2 B = X2 - X1 C = X1*Y2 - X2*Y1

Forma paramétrica

A forma paramétrica da reta baseia-se no fato de que qualquer ponto sobre o segmento de reta que liga P1 e P2 pode ser obtido por uma ponderação(média ponderada) dos pontos P1 e P2. Na qual o peso do ponto Pi (i=1,2) é tanto maior quanto mais próximo se está dele.

Tomando, por convenção, um parâmetro "t" com valor 0 no extremo correspondente a P1 e com valor 1 no extremo correspondente a P2, é possível chegar ao diagrama abaixo:

P2

. t = 1

 

 

.

P1

t = 0

A partir da observação do desenho acima é possível esquematizar a variação dos pesos de P1 e de P2 através dos seguintes gráficos:

^ Variação do Peso de P1 ^ Variação do Peso de P2

+ +

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

¦ ¦

+-----------+-> +-----------+->

 

0 1 t 0 1 t

 

Dos quais se conclui que :

 

Peso de P1 = (1-t)

Peso de P2 = t

 

Fazendo-se a média ponderada de P1 e P2 tem-se:

 

+----------------------------------+

¦ ¦

¦ (1-t) * P1 + t * P2 ¦

¦ P = ----------------------- ¦

¦ (1-t) + t ¦

¦ ¦

+----------------------------------+

 

+--------------------------+

¦ ¦

¦ P = P1 * (1-t) + P2 * t ¦

¦ ¦

+--------------------------+

 

ou

 

+--------------------------+

¦ ¦

¦ P = P1 + (P2 - P1) * t ¦

¦ ¦

+--------------------------+

 

onde, o parâmetro "t" varia entre 0 e 1.

 

O que equivale a

 

+--------------------------+

¦ ¦

¦ x = x1 * (1-t) + x2 * t ¦

¦ ¦

¦ y = y1 * (1-t) + y2 * t ¦

¦ ¦

+--------------------------+

 

 

 

8.3 CRIAÇÃO DE VETORES

 

Um vetor V pode ser definido como um segmento de reta orientado. Para calcular as componentes de um vetor com inicio no ponto A e final no ponto B faz-se:

 

A: (xa, ya) B: (xb, yb)

 

V = B - A

V = (xb-xa, yb-ya)

B

.

.

A

 

 

8.4 MþDULO DE UM VETOR

 

O módulo de um vetor V1(x1, y1) fornece seu tamanho.

 

Representa-se "módulo" por duas barras verticais em torno do nome do vetor. O cálculo do módulo de V1(x1,y1) é dado por:

 

+-----------------------------------+

¦ ¦

¦ ---------------- ¦

¦ / ¦

¦ |V1| = \/ x12 + y12 ¦

¦ ¦

¦ ¦

+-----------------------------------+

 

 

8.5 PRODUTO ESCALAR

 

O produto escalar entre dois vetores V1 e V2 é dado por:

V1: (x1, y1) V2: (x2, y2)

 

+------------------------------------------+

¦ ¦

¦ Prod. Esc. = x1*x2 + y1*y2 ¦

¦ ¦

¦ ou ¦

¦ ¦

¦ Prod. Esc = |V1| * |V2| * cos(alfa) ¦

¦ ¦

+------------------------------------------+

 

onde

alfa = ângulo entre os dois vetores

 

 

8.6 PRODUTO VETORIAL

 

O produto vetorial entre dois vetores V1 e V2 é dado por:

 

V1: (x1, y1, z1) V2: (x2, y2, z2)

 

| i j k |

Prod. Vetorial = | x1 y1 z1 |

| x2 y2 z2 |

 

i = (y1 * z2) - (z1 * y2)

j = (z1 * x2) - (x1 * z2)

k = (x1 * y2) - (y1 * x2)

 

O produto vetorial entre V1 e V2, nesta ordem, define um vetor perpendicular a V1 e V2, conforme a figura 8.1a. Se a ordem do produto for invertida o vetor resultante terá seu sentido invertido(figura 81.b).

[cg8_1.pix]

 

 

 

 

 

 

 

 

 

 

 

 

Figura 8.1 - Vetor Normal

8.7 ÂNGULO ENTRE DUAS RETAS

 

D A

D

 

 

C

B

 

Onde,

A : (xa, ya) B : (xb, yb) C : (xc, yc) D : (xd, yd)

 

+----------------------------+

¦ ¦

¦ (V1 . V2) ¦

¦ ANG = ACOS ----------- ¦

¦ |V1|*|V2| ¦

¦ ¦

+----------------------------+

 

Onde

 

V1 = B - A -->> (xb-xa, yb-ya)

V2 = D - C -->> (xd-xc, yd-yc)

V1 . V2 -> (produto escalar de V1 por V2) =>> x1*x2 + y1*y2

 

 

8.8 DISTÂNCIA ENTRE PONTO E RETA

 

Dado um segmento de reta R com extremidade nos pontos A(xa, ya) e B(xb, yb) e um ponto P1 de coordenadas (x1, y1) a distância entre a P1 e R é definida pelo comprimento do segmento de reta S, perpendicular a R e com extremos em P1 e no ponto de intersecção de R com S.

.B

 

 

.P1

. A

+----------------------------+

¦ ¦

¦ Ax1 + By1 + C ¦

¦d = ---------------------- ¦

¦ (A*A + B*B) ^ (1/2) ¦

¦ ¦

+----------------------------+

 

onde A, B e C são os coeficientes da equação geral da reta R, conforme o item 8.2.

 

 

8.9 INTERSECÇÃO ENTRE SEGMENTOS DE RETA

 

Dado o segmento de reta R1 de extremos nos pontos K(xk, yk) e L(xl, yl) e o segmento de reta R2 com extremos em M(xm, ym) e N(xn yn).

 

Dadas suas equaç¨es paramétricas:

 

R1 : x = xk + (xl - xk) * s

y = yk + (yl - yk) * s

R2 : x = xm + (xn - xm) * t

y = ym + (yn - ym) * t

 

Calcula-se "d" por:

+-----------------------------------------------------------+

¦ ¦

¦ d = (xn - xm) * (yl - ky) - (yn - ym) * (xl - xk) ¦

¦ ¦

+-----------------------------------------------------------+

 

se "d" for igual a zero então as linhas são paralelas. Caso contrário, o valor do parâmetro "s" na intersecção de R1 com R2 é dado por :

+-----------------------------------------------------------+

¦ ¦

¦ (xn - xm) * (ym - yk) - (yn - ym) * (xm - xk) ¦

¦ s = ------------------------------------------------- ¦

¦ d ¦

¦ ¦

+-----------------------------------------------------------+

 

 

e o valor do parâmetro "t" no mesmo ponto por:

+-----------------------------------------------------------+

¦ ¦

¦ (xl - xk) * (ym - yk) - (yl - yk) * (xm - xk) ¦

¦ t = ------------------------------------------------- ¦

¦ d ¦

¦ ¦

+-----------------------------------------------------------+

 

 

8.10 CONVEXIDADE DE POLµGONOS

 

Sejam os vértices V1, V2, ..., e Vn, do polígono P, dispostos em sentido horário. Para determinar se P é côncavo ou convexo, basta fazer:

 

Calcular os produtos vetoriais :

 

(V2-V1) X (V3-V1) = 0, 0, z1

(V3-V2) X (V4-V2) = 0, 0, z2

............................

............................

(VN-Vn-1) X (V1-Vn-1) = 0, 0, zn

 

Onde o operador "X" indica o produto vetorial entre dois vetores.

 

O resultado de todos os produtos vetoriais da lista acima terão a forma (0, 0, z). Se em algum destes o valor de Z for NEGATIVO então o polígono P é CÞNCAVO. Senão, é convexo.

 

Na figura 8.2 pode-se observar um exemplo de polígono côncavo

 

OBS.:

A coordenada Z dos vértices do polígono deve ser 0(zero).

 

 

 

[cg8_2.pix]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 8.2 - Polígono Côncavo

 

 

8.11 INCLUSÚO DE PONTO EM POLµGONO CONVEXO

 

Sejam os vértices V1, V2, ..., e Vn, do polígono P, dispostos em sentido horário. Para determinar se o ponto Q está dentro ou fora de P basta fazer:

 

Calcular os produtos vetoriais :

 

(V2-V1) X (Q-V1) = 0, 0, z1

(V3-V2) X (Q-V2) = 0, 0, z2

(V4-V3) X (Q-V3) = 0, 0, z3

............................

............................

(V1-Vn) X (Q-Vn) = 0, 0, zn

 

Onde o operador "X" indica o produto vetorial entre dois vetores.

 

O resultado de todos os produtos vetoriais da lista acima terão a forma (0, 0, z). Se em algum destes o valor de Z for NEGATIVO então o ponto está FORA do polígono P. Se em algum dos caso Z for 0 então o ponto Q está sobre uma das arestas de P.

 

OBS.:

A coordenada Z dos vértices do polígono e do ponto P deve ser 0(zero).

 

 

 

8.12 INCLUSÚO DE PONTO EM POLµGONO SIMPLES QUALQUER

 

Sejam os vértices V1, V2, ..., e Vn, do polígono P, dispostos em sentido horário. Para determinar se o ponto Q está dentro ou fora de P faz-se:

 

a)cria-se um segmento de reta horizontal iniciando em Q e terminando em R, um ponto à esquerda de Q, com a coordenada "y" igual a de Q;

 

b)determina-se qual a aresta do polígono que cruza PQ no ponto mais próximo de Q. Suponha-se que esta aresta tenha início em P1(x1,y1) e fim em P2(x2,y2);

 

c)calcula-se o produto vetorial

 

(P2-P1) X (Q-P1)

 

d)se a componente Z do resultado do produto vetorial recém calculado for POSITIVA o ponto está DENTRO; se for NEGATIVA, está fora. Se for 0 (zero), Q está sobre a aresta P2-P1.

 

OBS:

Caso nenhuma aresta do polígono cruze a linha QR então o ponto está fora do polígono.

 

[cg8_3.pix]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 8.3 - Inclusão de Pontos