> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/8_coding_in_dynamo/8-2_geometry-with-design-script/5-translation-rotation-and-other-transformations.md).

# Translation, Rotation, and Other Transformations

Certain geometry objects can be created by explicitly stating x, y, and z coordinates in three-dimensional space. More often, however, geometry is moved into its final position using geometric transformations on the object itself or on its underlying Coordinate System.

### Translation

The simplest geometric transformation is a translation, which moves an object a specified number of units in the x, y, and z directions.

![](/files/2hUnQapxpseKnMFiTcu8)

```js
// create a point at x = 1, y = 2, z = 3
p = Point.ByCoordinates(1, 2, 3);

// translate the point 10 units in the x direction,
// -20 in y, and 50 in z
// p2’s new position is x = 11, y = -18, z = 53
p2 = p.Translate(10, -20, 50);
```

### Rotation

While all objects in Dynamo can be translated by appending the *.Translate* method to the end of the object’s name, more complex transformations require transforming the object from one underlying Coordinate System to a new Coordinate System. For instance, to rotate an object 45 degrees around the x axis, we would transform the object from its existing Coordinate System with no rotation, to a Coordinate System which had been rotated 45 degrees around the x axis with the *.Transform* method:

![](/files/SGVXGcO0wcS0ULGsARq9)

```js
cube = Cuboid.ByLengths(CoordinateSystem.Identity(),
    10, 10, 10);

new_cs = CoordinateSystem.Identity();
new_cs2 = new_cs.Rotate(Point.ByCoordinates(0, 0),
    Vector.ByCoordinates(1,0,0.5), 25);

// get the existing coordinate system of the cube
old_cs = CoordinateSystem.Identity();

cube2 = cube.Transform(old_cs, new_cs2);
```

### Scale

In addition to being translated and rotated, Coordinate Systems can also be created scaled or sheared. A Coordinate System can be scaled with the *.Scale* method:

![](/files/R0tQYdl6Qnbrz2iPKu6U)

```js
cube = Cuboid.ByLengths(CoordinateSystem.Identity(),
    10, 10, 10);

new_cs = CoordinateSystem.Identity();
new_cs2 = new_cs.Scale(20);

old_cs = CoordinateSystem.Identity();

cube2 = cube.Transform(old_cs, new_cs2);
```

Sheared Coordinate Systems are created by inputting non-orthogonal vectors into the Coordinate System constructor.

![](/files/hxSpAYH2jWZhwdJ1qGqS)

```js
new_cs = CoordinateSystem.ByOriginVectors(
    Point.ByCoordinates(0, 0, 0),
	Vector.ByCoordinates(-1, -1, 1),
	Vector.ByCoordinates(-0.4, 0, 0));

old_cs = CoordinateSystem.Identity();

cube = Cuboid.ByLengths(CoordinateSystem.Identity(),
    5, 5, 5);

new_curves = cube.Transform(old_cs, new_cs);
```

Scaling and shearing are comparatively more complex geometric transformations than rotation and translation, so not every Dynamo object can undergo these transformations. The following table outlines which Dynamo objects can have non-uniformly Scaled Coordinate Systems, and Sheared Coordinate Systems.

| Class        | Non-Uniformly Scaled Coordinate System | Sheared Coordinate System |
| ------------ | -------------------------------------- | ------------------------- |
| Arc          | No                                     | No                        |
| NurbsCurve   | Yes                                    | Yes                       |
| NurbsSurface | No                                     | No                        |
| Circle       | No                                     | No                        |
| Line         | Yes                                    | Yes                       |
| Plane        | No                                     | No                        |
| Point        | Yes                                    | Yes                       |
| Polygon      | No                                     | No                        |
| Solid        | No                                     | No                        |
| Surface      | No                                     | No                        |
| Text         | No                                     | No                        |
