exponenta event banner

reducepatch

Уменьшение числа граней сегмента

Синтаксис

reducepatch(p,r)
nfv = reducepatch(p,r)
nfv = reducepatch(fv,r)
nfv = reducepatch(p)
nfv = reducepatch(fv)
reducepatch(...,'fast')
reducepatch(...,'verbose')
nfv = reducepatch(f,v,r)
[nf,nv] = reducepatch(...)

Описание

reducepatch(p,r) уменьшает количество граней патча, идентифицируемого маркером p, при попытке сохранить общую форму исходного объекта. Программное обеспечение MATLAB ® интерпретирует коэффициент уменьшенияr одним из двух способов в зависимости от его значения:

  • Если r менее 1, r интерпретируется как доля от исходного числа граней. Например, при указании r как 0,2, то количество граней уменьшается до 20% от числа в исходном патче.

  • Если r больше или равно 1, то r - целевое число граней. Например, при указании r как 400, то количество граней уменьшается до тех пор, пока не останется 400 граней.

nfv = reducepatch(p,r) возвращает уменьшенный набор граней и вершин, но не задает Faces и Vertices свойства исправления p. Структура nfv содержит грани и вершины после сокращения.

nfv = reducepatch(fv,r) выполняет сокращение граней и вершин в структуре fv.

nfv = reducepatch(p) и nfv = reducepatch(fv)использует значение сокращения, равное 0.5.

reducepatch(...,'fast') предполагает, что вершины уникальны и не вычисляют общие вершины.

reducepatch(...,'verbose') печатает сообщения о ходе выполнения в окне команд по мере выполнения вычислений.

nfv = reducepatch(f,v,r)выполняет сокращение на гранях в f и вершины в v.

[nf,nv] = reducepatch(...) возвращает грани и вершины в массивах nf и nv.

Примеры

свернуть все

Этот пример иллюстрирует эффект уменьшения числа граней только до 15% от исходного значения.

figure
[x,y,z,v] = flow;
p = patch(isosurface(x,y,z,v,-3));
p.FaceColor = 'w';
p.EdgeColor = 'b';
daspect([1,1,1])
view(3)

Figure contains an axes. The axes contains an object of type patch.

Уменьшите количество граней.

reducepatch(p,0.15)

Figure contains an axes. The axes contains an object of type patch.

Совет

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

Число выходных треугольников может не совпадать с числом, указанным в аргументе коэффициента уменьшения (r), особенно если грани исходного фрагмента не являются треугольниками.

Расширенные возможности

Представлен до R2006a