exponenta event banner

масштаб

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

Описание

пример

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 и обеспечьте согласованность с сеткой.

Создание модели.

model = createpde;

Импорт и печать геометрии.

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

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

Выполните сетку геометрии и постройте график сетки.

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.

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

figure
pdegplot(model)
hold on
pdemesh(model)

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

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

generateMesh(model);

figure
pdegplot(model)
hold on
pdemesh(model)

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

Отображение геометрии по оси X и регенерация сетки.

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

Постройте график результирующей геометрии и сетки.

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 и z для 3-D геометрии.

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

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

свернуть все

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

Совет

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

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

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

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