полибуфер

Создайте буфер вокруг точек, строк или объектов polyshape

Синтаксис

polyout = polybuffer(P,'points',d)
polyout = polybuffer(P,'lines',d)
polyout = polybuffer(P,'lines',d,'JointType',jt)
polyout = polybuffer(P,'lines',d,'JointType','miter','MiterLimit',lim)
polyout = polybuffer(polyin,d)
polyout = polybuffer(polyin,d,'JointType',jt)
polyout = polybuffer(polyin,d,'JointType','miter','MiterLimit',lim)

Описание

пример

polyout = polybuffer(P,'points',d) возвращает объект polyshape с контурами, которые буферизуют 2D точки в P расстоянием d. Функция polybuffer вычисляет буфер путем взятия объединения кругов радиуса d, сосредоточенный в каждой точке в P. Первый столбец матричного P содержит x - координаты точек, чтобы буферизовать и второй столбец содержат соответствующий y - координаты.

Если вы создаете объект polyshape polyout, можно анализировать его свойства или выполнить дополнительные вычисления с помощью функций polyshape. Например, можно получить доступ к вершинам, которые задают буферизированную форму со свойством polyout.Vertices, и можно построить форму с помощью команды plot(polyout).

пример

polyout = polybuffer(P,'lines',d) возвращает объект polyshape с контурами, которые буферизуют линейные сегменты, заданные 2D точками в P. Функция polybuffer вычисляет буфер путем перемещения круга радиуса d вдоль линейных сегментов, созданных точками ввода, сосредоточенными на линейных сегментах.

пример

polyout = polybuffer(P,'lines',d,'JointType',jt) задает, как места встречи конечных точек линейного сегмента (соединения) обработаны. Например, polybuffer(P,'lines',d,'JointType','square') смело встречает соединения.

polyout = polybuffer(P,'lines',d,'JointType','miter','MiterLimit',lim) задает предельный угол стыка, когда объединенный тип задан как 'miter'. Предельный угол стыка является максимальным допустимым отношением между расстоянием, объединенная вершина перемещена и буферное расстояние d. Предел lim должен быть больше, чем или равным 2.

пример

polyout = polybuffer(polyin,d) возвращает объект polyshape с контурами, которые буферизуют объект polyin входа polyshape расстоянием d. Для положительных значений d твердые контуры области polyin расширяются модулями d и уменьшением контуров дыры модулями d. Отрицательные величины d уменьшают твердые контуры и расширяют контуры дыры.

пример

polyout = polybuffer(polyin,d,'JointType',jt) задает, как соединения polyshape обработаны, когда первым входным параметром является polyshape.

polyout = polybuffer(polyin,d,'JointType','miter','MiterLimit',lim) задает предельный угол стыка, когда объединенный тип задан как 'miter', и первым входным параметром является polyshape.

Примеры

свернуть все

Создайте матрицу, которая содержит 2D координаты трех точек. Затем создайте объект polyshape, который буферизует каждую точку расстоянием 0,25 модулей.

P = [0 0; 1 1; 2 1];
polyout = polybuffer(P,'points',0.25)
polyout = 
  polyshape with properties:

      Vertices: [542x2 double]
    NumRegions: 3
      NumHoles: 0

Постройте исходные точки и их буферные области.

plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout)
axis equal

Создайте буферные области окружающие линейные сегменты.

Создайте матрицу 2D точек и вычислите объект polyshape, который буферизует линейные сегменты, соединяющие точки.

P = [0 0; 1 1; 2 1];
polyout1 = polybuffer(P,'lines',0.25);
plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout1)
axis equal
hold off

По умолчанию polybuffer закругляет соединения то подключение линейные сегменты. Можно управлять формой соединений при помощи пары "имя-значение" 'JointType'. Например, используйте значение 'miter', чтобы сохранить угол, соединяющий эти два линейных сегмента.

figure
polyout2 = polybuffer(P,'lines',0.25,'JointType','miter');
plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout2)
axis equal

Создайте полигон с твердым контуром и контуром дыры. Затем создайте буфер на расстоянии 0,1 от контуров. По умолчанию буфер округлил соединения.

polyin = polyshape({[0 0 1 3],[0.5 1.5 1.5 0.5]},{[0 3 3 0],[0.5 0.5 1.5 1.5]});
plot(polyin)
polyout1 = polybuffer(polyin,0.1);
hold on
plot(polyout1)
hold off

Создайте буфер с помощью предельного угла стыка 2. Предельный угол стыка управляет заостренностью соединений.

polyout2 = polybuffer(polyin,0.1,'JointType','miter','MiterLimit',2);
plot(polyin)
hold on
plot(polyout2)

Входные параметры

свернуть все

Введите вершины 2D точек, заданных как числовая матрица с 2 столбцами. Первый столбец P содержит x - координаты и второй столбец содержат соответствующий y - координаты.

Введите polyshape, заданный как скаляр, вектор, матрица или многомерный массив. Когда polyin является массивом объектов polyshape, polybuffer применяет заданные буферные параметры к каждому элементу.

Буферное расстояние, заданное в виде числа.

Когда первый входной параметр является набором вершин, d должен быть положительным числовым скаляром.

Когда первым входным параметром является polyshape, d может быть положительным, отрицательным, или нуль:

  • Если d>0, то твердые контуры выращивают расстоянием d и уменьшение контуров дыры.

  • Если d<0, то твердое уменьшение контуров расстоянием d и контуры дыры растет.

  • Если d=0, то нет никакого изменения во входных контурах.

Объединенный тип для буферных контуров, заданных как одно из следующего:

  • вокруг Закруглите граничные углы.

  • 'square' — Смело встретьте граничные углы.

  • 'miter' — Ограничьте отношение между расстоянием, объединенная вершина перемещена и буферное расстояние до 3. Этот предел предотвращает чрезмерную заостренность.

Когда первый входной параметр является набором вершин, polybuffer применяет объединенный тип только там, где конечные точки двух линейных сегментов встречаются, а не в открытой конечной точке линейного сегмента.

Когда первым входным параметром является polyshape, polybuffer только применяет объединенный тип к твердым контурам, когда буферное расстояние положительно, или для контуров дыры, когда буферное расстояние отрицательно.

Предельный угол стыка, заданный в виде положительного числа, больше, чем или равный 2. Предельный угол стыка является отношением между расстоянием, объединенная вершина перемещена и буферное расстояние. Установка предельного угла стыка управляет заостренностью граничных соединений.

Смотрите также

|

Введенный в R2017b