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:
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