polybuffer

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

Описание

пример

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

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

пример

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

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

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

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

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

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

  • Если d<0затем твердые контуры сокращаются на расстояние d и дырка контуров расти.

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

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

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

  • 'square' - Квадрат от краевых углов.

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

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

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

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

См. также

|

Введенный в R2017b