polybuffer

Aumenta ou reduz um polyshape por uma distância fixa.

Categoria: Mathematics > Computational Geometry

Sintaxe

pb = polybuffer(pshape, d)

Desloca os contornos pela distância d: para fora se d é positivo, para dentro se negativo.

pb = polybuffer(pshape, d, 'JointType', type)

Escolhe como os cantos são tratados: 'round' (padrão), 'square' ou 'miter'.

Descrição

O buffer é o conjunto de pontos a distância até d da forma. Para um retângulo 4 por 3 expandido de 1 com cantos arredondados, a área é 12 + 14*1 + pi: o original, quatro faixas ao longo dos lados e quatro quartos de disco nos cantos. Juntas em esquadria mantêm os cantos vivos, então a área sobe para 30 no mesmo exemplo.

Os furos encolhem quando a forma cresce e se fecham quando o deslocamento excede o tamanho deles.

Argumentos de entrada

pshape
Um objeto polyshape.
d
Distância de deslocamento. Um valor negativo reduz a forma e pode fazê-la desaparecer ou se dividir.
'JointType'
Estilo dos cantos. Cantos arredondados são arcos de raio d, cantos em esquadria mantêm o ângulo vivo, cantos quadrados são cortados retos.

Argumentos de saída

pb
O polyshape deslocado.

Exemplo

Crescimento arredondado e em esquadria

P = polyshape([0 4 4 0], [0 0 3 3]);
rounded = polybuffer(P, 1);
mitered = polybuffer(P, 1, 'JointType', 'miter');
fprintf('%.4f\n', area(rounded), area(mitered))
Saída
29.1410
30.0000

Veja também

polyshape area perimeter rmslivers