scale

Масштабная геометрия

Описание

пример

scale(g,s) масштабирует геометрию g по фактору s относительно источник.

пример

scale(g,s,refpoint) масштабирует геометрию относительно точки ссылки refpoint.

h = scale(g,___) возвращает указатель h к получившемуся объекту геометрии g. Используйте этот синтаксис с любыми входными параметрами из предыдущих синтаксисов.

Если исходная геометрия является DiscreteGeometry объект, затем функция изменяет исходную геометрию и возвращает указатель h в измененный DiscreteGeometry объект геометрии. Если исходная геометрия является AnalyticGeometry объект, затем h является указателем на новый DiscreteGeometry объект геометрии. В этом случае исходная геометрия остается неизменной.

Примеры

свернуть все

Масштабируйте 2-D геометрию вдоль осей X и Y и гарантируйте согласованность с mesh.

Создайте модель.

model = createpde;

Импорт и построение графика геометрии.

g = importGeometry(model,'PlateHolePlanar.stl');
pdegplot(model)

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

Создайте сетку и постройте график mesh.

generateMesh(model);

figure
pdemesh(model)

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

Масштабируйте геометрию в 10 раз вдоль оси X.

scale(g,[10 1])
ans = 
  DiscreteGeometry with properties:

       NumCells: 0
       NumFaces: 1
       NumEdges: 5
    NumVertices: 5
       Vertices: [5x3 double]

Постройте график геометрии.

figure
pdegplot(model)

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

Постройте график геометрии и mesh. The scale функция изменяет геометрию, но не изменяет mesh.

figure
pdegplot(model)
hold on
pdemesh(model)

Figure contains an axes. The axes contains 3 objects of type line.

После изменения геометрии всегда регенерируйте mesh.

generateMesh(model);

figure
pdegplot(model)
hold on
pdemesh(model)

Figure contains an axes. The axes contains 3 objects of type line.

Отразите геометрию на оси X и перегенерируйте mesh.

scale(g,[1 -1]);
generateMesh(model);

Постройте график получившейся геометрии и mesh.

figure
subplot(2,1,1)
pdegplot(model)
subplot(2,1,2)
pdemesh(model)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains 2 objects of type line.

Увеличьте геометрию: сначала равномерно во всех направлениях, а затем используя различные коэффициенты масштабирования по разным осям.

Создайте и постройте график геометрии.

g = multicuboid(1,1,1);
pdegplot(g,'VertexLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

scale(g,2);
pdegplot(g,'VertexLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Теперь масштабируйте по факторам 2, 3 и 4 вдоль осей x -, y - и z, соответственно. Постройте график результата.

scale(g,[2 3 4]);
pdegplot(g,'VertexLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Разверните геометрию вверх тормашками, масштабируя ее с помощью фактора -1 и использование нижнего переднего угла (вершина 1) в качестве ссылки точки.

scale(g,[1 1 -1], [2 -3 0]);
pdegplot(g,'VertexLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

свернуть все

Геометрия, заданная как DiscreteGeometry или AnalyticGeometry объект.

Масштабный коэффициент, заданный как действительное число или вектор из двух или трех вещественных чисел. Используйте одно значение для равномерного масштабирования во всех направлениях. Используйте вектор из двух или трех элементов, чтобы задать различные коэффициенты масштабирования вдоль x -, y -, и, для 3-D геометрии, z -осей.

Контрольная точка для масштабирования, заданная как вектор из двух или трех вещественных чисел для 2-D и 3-D геометрии, соответственно

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

свернуть все

Получившаяся геометрия, возвращенная как указатель. Если исходная геометрия g является DiscreteGeometry объект, затем h является указателем на измененный DiscreteGeometry объект геометрии g. Если g является AnalyticGeometry объект, затем h является указателем на новый DiscreteGeometry объект геометрии. В этом случае исходная геометрия g остается неизменным.

Совет

  • scale изменяет геометрию, но не изменяет mesh. После изменения геометрии перегенерируйте mesh, чтобы гарантировать соответствие сетки новой геометрии.

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

  • Если g является AnalyticGeometry объект, и необходимо заменить его получившейся дискретной геометрией, присвоить выход исходной геометрии, например g = scale(g,20).

Введенный в R2020a