12.07.2015 Views

III WVC 2007 - Iris.sel.eesc.sc.usp.br - USP

III WVC 2007 - Iris.sel.eesc.sc.usp.br - USP

III WVC 2007 - Iris.sel.eesc.sc.usp.br - USP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>WVC</strong>'<strong>2007</strong> - <strong>III</strong> Workshop de Visão Computacional, 22 a 24 de Outu<strong>br</strong>o de <strong>2007</strong>, São José do Rio Preto, SP.Figura 3. Imagem gerada pela execução doAlgoritmo 2Algoritmo 1 Encontra CruzamentosEntrada: Os pontos (x 1 ,y 1 ), (x 2 ,y 2 ) (que definem a linha),o ponto (x c ,y c ), centro da circunferência e o raior.Saída: Os pontos (x i1 ,y i1 ), (x i2 ,y i2 ), de interseção.1: a ←−2 × x c2: b ←−2 × y c3: c ← x 2 c + y 2 c − r 24: se (x 1 = x 2 ) então5: temp 1 ← y 1 − y 26: temp 2 ← x 2 − x 17: senão8: temp 1 ← x 2 − x 19: temp 2 ← y 1 − y 210: fim se11: ∆ ← (−2 × x c − 2 × a × y c ) 2 − (4 − 4 × a 2 )(y 2 c −r 2 + x 2 c)12: temp 3 ←−x 1 × y 2 + x 2 × y 113: temp 4 ← temp 2 1 + temp 2 214: temp 5 ← a × temp 2 1 − 2 × temp 3 × temp 2 − b ×temp 1 × temp 215: temp 6 ← temp 2 3 + c × temp 2 116: ∆ ← temp 2 5 − 4 × temp 4 × temp 617: se ∆ < 0 então18: flag ←−119: retorna flag20: fim se21: flag =022: x i1 ← (−temp 5 + √ ∆)/(2 × temp 4 )23: x i2 ← (−temp 5 − √ ∆)/(2 × temp 4 )24: y i1 ← (temp 3 − x i1 × temp 2 )/temp 125: y i2 ← (temp 3 − x i2 × temp 2 )/temp 126: se (x 1 = x 2 ) então27: retorna flag,(y i1 ,x i1 ), (y i2 ,x i2 )28: fim se29: retorna flag,(x i1 ,y i1 ), (x i2 ,y i2 )Figura 4. Imagem onde uma interseção éinválidaAlgoritmo 2 Desenha LinhaEntrada: Os pontos p 1 =(x 1 ,y 1 ) e p 2 =(x 2 ,y 2 ), o centroc =(x c ,y c ) e o raio r1: se (distancia(p 1 ,c) < r) e (distancia(p 2 ,c) < r)então2: (x i1 ,y i1 ) ← (x 1 ,y 1 )3: (x i2 ,y i2 ) ← (x 2 ,y 2 )4: senão5: Encontre (x i1 ,y i1 ) e (x i2 ,y i2 ) utilizando o Algoritmo16: se flag =0então7: se (distancia(p 1 ,c) < distancia((x i1 ,y i1 ),c))então8: (x i2 ,y i2 ) ← p 19: fim se10: se (distancia(p 2 ,c) < distancia((x i2 ,y i2 ),c))então11: (x i2 ,y i2 ) ← p 212: fim se13: fim se14: Desenhe a linha definida por (x i1 ,y i1 ) e (x i2 ,y i2 )15: fim serealmente consistentes, isso deve ser feito porque nem semprea linha que se deseja desenhar é limitada pelos pontos deinterseção, como observa-se na Figura 4. O Algoritmo 2 validaos pontos e desenha a parte visível da linha, caso exista(Figura 3).4. ConclusãoOs principais algoritmos de clipping de linhas são voltadosapenas para janelas retangulares. Diante deste241

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!