scale

Scale geometry

Description

example

scale(g,s) scales the geometry g by the factor s with respect to the origin.

example

scale(g,s,refpoint) scales the geometry with respect to the reference point refpoint.

h = scale(g,___) returns a handle h to the modified geometry object g. Use this syntax with any input arguments from the previous syntaxes.

Examples

collapse all

Scale a 2-D geometry along the x- and y-axis and ensure consistency with the mesh.

Create a model.

model = createpde;

Import and plot a geometry.

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

Mesh the geometry and plot the mesh.

generateMesh(model);

figure
pdemesh(model)

Scale the geometry by a factor of 10 along the x-axis.

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

       NumCells: 0
       NumFaces: 1
       NumEdges: 5
    NumVertices: 5

Plot the geometry.

figure
pdegplot(model)

Plot the geometry and mesh. The scale function modifies a geometry, but it does not modify a mesh.

figure
pdegplot(model)
hold on
pdemesh(model)

After modifying the geometry, always regenerate the mesh.

generateMesh(model);

figure
pdegplot(model)
hold on
pdemesh(model)

Reflect the geometry across the x-axis and regenerate the mesh.

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

Plot the resulting geometry and mesh.

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

Enlarge a geometry: first uniformly in all directions, and then using different scaling factors along different axes.

Create and plot a geometry.

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

Scale the geometry by a factor of 2 uniformly along all coordinate axes. Plot the result.

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

Now scale by factors of 2, 3, and 4 along the x-, y-, and z-axes, respectively. Plot the result.

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

Flip the geometry upside down by scaling it with the factor -1 and using the bottom front corner (vertex 1) as a reference point.

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

Input Arguments

collapse all

Geometry, specified as a DiscreteGeometry object.

Scaling factor, specified as a real number or vector of two or three real numbers. Use one value for uniform scaling in all directions. Use a vector of two or three elements to specify different scaling factors along the x-, y-, and, for a 3-D geometry, z-axes.

Reference point for scaling specified as a vector of two or three real numbers for a 2-D and 3-D geometry, respectively

Output Arguments

collapse all

Modified geometry, returned as a handle to the modified geometry object g.

Limitations

Tips

  • scale modifies a geometry, but it does not modify a mesh. After modifying a geometry, regenerate the mesh to ensure a proper mesh association with the new geometry.

  • If the scaling factor is negative, then the coordinates will flip their signs. The scaling factor of -1 mirrors the existing geometry if the reference point is the origin.

Introduced in R2020a