exponenta event banner

полибуфер

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

Описание

пример

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

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

пример

polyout = polybuffer(P,'lines',d) возвращает polyshape объект с границами, которые буферизуют сегменты линии, определенные точками 2-D в 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 объект с границами, буферизирующими входные данные polyshape объект polyin на расстояние d. Для положительных значений d, границы сплошной области polyin расширить на d единицы измерения и границы отверстий сокращаются на d единиц. Отрицательные значения d уменьшить границы твердого тела и расширить границы отверстия.

пример

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

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

Примеры

свернуть все

Создайте матрицу, содержащую 2-D координаты трех точек. Затем создайте 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

Figure contains an axes. The axes contains 2 objects of type line, polygon.

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

Создайте матрицу из 2-D точек и вычислите 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

Figure contains an axes. The axes contains 2 objects of type line, polygon.

По умолчанию 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

Figure contains an axes. The axes contains 2 objects of type line, polygon.

Создайте многоугольник с сплошной границей и границей отверстия. Затем создайте буфер на расстоянии 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

Figure contains an axes. The axes contains 2 objects of type polygon.

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

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

Figure contains an axes. The axes contains 2 objects of type polygon.

Входные аргументы

свернуть все

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

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

Расстояние буфера, указанное как числовой скаляр.

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

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

  • Если d>0, то сплошные границы вырастают на расстояние d и уменьшить границы отверстий.

  • Если d<0, то сплошные границы сжимаются на расстояние d и границы отверстий растут.

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

Тип соединения для границ буфера, указанный как одно из следующих значений:

  • 'round' - Округлить граничные углы.

  • 'square' - Квадратные со стороны граничных углов.

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

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

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

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

См. также

|

Представлен в R2017b