> 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/cs/8_coding_in_dynamo/8-2_geometry-with-design-script/5-translation-rotation-and-other-transformations.md).

# Posunutí, otočení a další transformace

Určité geometrické objekty je možné vytvářet přímým zadáním souřadnic X, Y a Z v trojrozměrném prostoru. Geometrie se však častěji do konečné pozice přesunují pomocí geometrických transformací samotného objektu nebo jeho základního souřadnicového systému.

### Posunutí

Nejjednodušší geometrickou transformací je posunutí, čímž se objekt posune o zadaný počet jednotek ve směru X, Y a Z.

![](https://3694670440-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVszS6grrxDyBMnEEr49a%2Fuploads%2Fgit-blob-b3fbdeea901cdf5b8430956f3a4f033f5fd3dcda%2FTransformations_01.png?alt=media)

```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);
```

### Otočení

Ačkoliv lze všechny objekty v aplikaci Dynamo posunout připojením metody *.Translate* na konec názvu objektu, pro složitější transformace je nutné provést transformaci souvisejícího objektu z jednoho základního souřadnicového systému do nového souřadnicového systému. Jestliže například potřebujeme otočit objekt o 45 stupňů kolem osy X, převedeme objekt z jeho původního souřadnicového systému bez otočení do souřadnicového systému otočeného o 45 stupňů kolem osy X pomocí metody *.Transform*.

![](https://3694670440-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVszS6grrxDyBMnEEr49a%2Fuploads%2Fgit-blob-05941a9d4a11a5f82c21c40f925a30c18d2f774f%2FTransformations_02.png?alt=media)

```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);
```

### Měřítko

Kromě posunutí a otočení lze souřadnicové systémy vytvářet také se změněným měřítkem nebo kolmým posunem. Měřítko souřadnicového systému lze změnit metodou *.Scale*:

![](https://3694670440-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVszS6grrxDyBMnEEr49a%2Fuploads%2Fgit-blob-52832a10e557d02ce01b169f5ffe1a589846ac41%2FTransformations_03.png?alt=media)

```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);
```

Souřadnicové systémy s kolmým posunem lze vytvořit zadáním neortogonálních vektorů do konstruktoru souřadnicového systému.

![](https://3694670440-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVszS6grrxDyBMnEEr49a%2Fuploads%2Fgit-blob-c2e70c96c963f773934afdd77a41eac0118ab109%2FTransformations_04.png?alt=media)

```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);
```

Změny měřítka a kolmý posun jsou mnohem složitější geometrické transformace než otočení nebo posunutí, proto je na některé objekty aplikace Dynamo nemusí být možné použít. Následující tabulka uvádí, které objekty aplikace Dynamo mohou mít souřadnicové systémy s nestejnoměrným měřítkem nebo souřadnicové systémy s kolmým posunem.

| Třída        | Souřadnicový systém s nestejnoměrným měřítkem | Souřadnicový systém s kolmým posunem |
| ------------ | --------------------------------------------- | ------------------------------------ |
| Oblouk       | Ne                                            | Ne                                   |
| NurbsCurve   | Ano                                           | Ano                                  |
| NurbsSurface | Ne                                            | Ne                                   |
| Kružnice     | Ne                                            | Ne                                   |
| Úsečka       | Ano                                           | Ano                                  |
| Rovina       | Ne                                            | Ne                                   |
| Bod          | Ano                                           | Ano                                  |
| Polygon      | Ne                                            | Ne                                   |
| Těleso       | Ne                                            | Ne                                   |
| Plocha       | Ne                                            | Ne                                   |
| Text         | Ne                                            | Ne                                   |
