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. Область struct nfv содержит грани и вершины после сокращения.

nfv = reducepatch(fv,r) выполняет сокращение граней и вершин в struct 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