InstruçÔes

Recorte de polĂ­gonos de Sutherland-Hodgman

O algoritmo de recorte de polígonos de Sutherland-Hodgman encontra o polígono que é a intersecção entre um polígono arbitrårio (o "polígono sujeito") e um polígono convexo (o "polígono de recorte"). Ele é usado em gråficos de computador (especialmente gråficos 2D) para reduzir a complexidade de uma cena que estå sendo exibida eliminando partes de um polígono que não precisam ser exibidas. Pegue o polígono que se fecha definido pelos pontos: <pre>[(50, 150), (200, 50), (350, 150), (350, 300), (250, 300), (200, 250), (150, 350), (100, 250), (100, 200)]</pre> e recorte-o pelo retùngulo definido pelos pontos: <pre>[(100, 100), (300, 100), (300, 300), (100, 300)]</pre>

O que fazer:

Escreva uma função que receba dois arrays como parĂąmetro. O primeiro array contĂ©m os pontos do polĂ­gono sujeito e o segundo array contĂ©m os pontos do polĂ­gono de recorte. A função deve retornar um array contendo os pontos do polĂ­gono recortado. Cada nĂșmero deve ser arredondado para 3 casas decimais.

Critérios de Aceitação:

Testes:

  • `clip` deve ser uma função.
  • `clip([[50, 150], [200, 50], [350, 150], [350, 300], [250, 300], [200, 250], [150, 350], [100, 250], [100, 200]], [[100, 100], [300, 100], [300, 300], [100, 300]])` deve retornar um array.
  • `clip([[50, 150], [200, 50], [350, 150], [350, 300], [250, 300], [200, 250], [150, 350], [100, 250], [100, 200]], [[100, 100], [300, 100], [300, 300], [100, 300]])` deve retornar `[[100, 116.667], [125, 100], [275, 100], [300, 116.667], [300, 300], [250, 300], [200, 250], [175, 300], [125, 300], [100, 250]]`.
  • `clip([[150, 200], [400, 450], [30, 50]], [[10, 10], [300, 200], [400, 600], [100, 300]])` deve retornar `[[150, 200], [350, 400], [348.611, 394.444], [30, 50]]`.
  • `clip([[250, 200], [100, 450], [130, 250]], [[50, 60], [100, 230], [400, 600], [100, 300]])` deve retornar `[[129.167, 329.167], [119.565, 319.565], [121.854, 304.305]]`.

Console