Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

**MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.**

**MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.**

Affine linear transformations
with
a vector * b* and
a matrix

`plot::Translate2d([b1, b2], Primitive1, Primitive2, ...)`

applies the translation by the vector=*b*`[b1, b2]`

to all points of 2D primitives.`plot::Translate3d([b1, b2, b3], Primitive1, ...)`

applies the translation by the vector=*b*`[b1, b2, b3]`

to all points of 3D primitives.`plot::Reflect2d([x1, y1], [x2, y2], Primitive1, ...)`

reflects all 2D primitives about the line through the points`[x1, y1]`

and`[x2, y2]`

.`plot::Reflect3d([x, y, z], [nx, ny, nz], Primitive1, ...)`

reflects all 3D primitives about the plane through the point`[x, y, z]`

with the normal`[nx, ny, nz]`

.`plot::Rotate2d(angle, [c1, c2], Primitive1, ...)`

rotates all points of 2D primitives counter clockwise by the given angle about the pivot point`[c1, c2]`

.`plot::Rotate3d(angle, [c1, c2, c3], [d1, d2, d3], Primitive1, ...)`

rotates all points of 3D primitives by the given angle around the rotation axis specified by the pivot point`[c1, c2, c3]`

and the direction`[d1, d2, d3]`

.`plot::Scale2d([s1, s2], Primitive1, ...)`

applies the diagonal scaling matrix`diag`

(`s1`

,`s2`

) to all points of 2D primitives.`plot::Scale3d([s1, s2, s3], Primitive1, ...)`

applies the diagonal scaling matrix`diag`

(`s1`

,`s2`

,`s3`

) to all points of 3D primitives.`plot::Transform2d([b1, b2], A, Primitive1, ...)`

applies the general affine linear transformation with a*2×2*matrix`A`

and a vector=*b*`[b1, b2]`

to all points of 2D primitives.`plot::Transform3d([b1, b2, b3], A, Primitive1, ...)`

applies the general affine linear transformation with a*3×3*matrix`A`

and a vector=*b*`[b1, b2, b3]`

to all points of 3D primitives.

The ellipses `plot::Ellipse2d`

provided
by the `plot`

library have axes parallel to the coordinate
axes. We use a rotation to create an ellipse with a different orientation:

center := [1, 2]: ellipse := plot::Ellipse2d(2, 1, center): plot(plot::Rotate2d(PI/4, center, ellipse))

Transform objects can be animated. We build a group consisting of the ellipse and its symmetry axes. An animated rotation is applied to the group:

g := plot::Group2d( ellipse, plot::Line2d(center, [center[1] + 2, center[2]]), plot::Line2d(center, [center[1] - 2, center[2]]), plot::Line2d(center, [center[1], center[2] + 1]), plot::Line2d(center, [center[1], center[2] - 1]) ): plot(plot::Rotate2d(a, center, a = 0..2*PI, g)):

Objects inside an animated transformation can be animated, too.
The animations run independently and may be synchronized via suitable
values of the `TimeRange`

as described in section Advanced Animations: The Synchronization Model.

We generate a sphere * s* of
radius

r := 1: // the radius of the sphere R := 1.01: // increase the radius a little bit c := [0, 0, 0]: // the center of the sphere thet := PI/3: // spherical coordinates of phi := PI/4: // the final point p // the final point: p := plot::Point3d(c[1] + R*cos(phi)*sin(thet), c[2] + R*sin(phi)*sin(thet), c[3] + R*cos(thet), PointSize = 2*unit::mm, Color = RGB::Black): // the sphere: s := plot::Sphere(r, c, Color = RGB::Green): // the meridian at thet = 0 c1 := plot::Curve3d([c[1] + R*sin(t), c[2], c[3] + R*cos(t)], t = 0..thet, Color = RGB::Black): // the meridian at thet = 0 c2 := plot::Curve3d([c[1] + R*cos(t)*sin(thet), c[2] + R*sin(t)*sin(thet), c[3] + R*cos(thet)], t = 0..phi, Color = RGB::Black): // form a group consisting of the tangent plane and its normal: g := plot::Group3d( plot::Surface([c[1] + u, c[2] + v, c[3] + R], u = -1..1, v = -1..1, Mesh = [2, 2], Color = RGB::Red.[0.3]), plot::Arrow3d([c[1], c[2], c[3] + R], [c[1], c[2], c[3] + R + 0.7]) ): // rotate the group for 3 seconds along the meridian: g := plot::Rotate3d(a, c, [0, 1, 0], a = 0..thet, g, TimeRange = 0..3): // rotate the group for further 3 seconds along the azimuth: g := plot::Rotate3d(a, c, [0, 0, 1], a = 0..phi, g, TimeRange = 3..6): plot(s, g, c1, c2, p, CameraDirection = [2, 3, 4]):

Was this topic helpful?