1
0
Fork 0
freesewing/sites/dev/docs/reference/api/path/rotate
Joost De Cock ab3204f9f1 chore: Port FreeSewing.dev to docusaurus
The replaces the NextJS site powering FreeSewing.dev with a Docusaurus
setup. It's part of my efforts to simplify FreeSewing's setup so we can
focus on our core value proposition.
2024-09-28 13:13:48 +02:00
..
readme.mdx chore: Port FreeSewing.dev to docusaurus 2024-09-28 13:13:48 +02:00

---
title: Path.rotate()
---

The `Path.rotate()` returns a path that is a rotated copy of this path.
This method behaves like calling [Point.rotate](/reference/api/point/rotate) on all nodes of this path.

## Signature

```js
Path path.rotate(number deg, Point rotationOrigin, cloneAttributes = false)
```

If you pass a truthy value to the cloneAttributes parameter, it will return a deep clone of the
path, including its attributes. By default, it will return a shallow
copy, without the attributes.

## Example


<Example caption="Example of the Path.rotate() method">
```js
({ Point, points, Path, Snippet, paths, snippets, part }) => {

  points.B = new Point(10, 30)
  points.BCp2 = new Point(40, 20)
  points.C = new Point(90, 30)
  points.CCp1 = new Point(50, -30)
  points.origin = new Point(6, 34)
  snippets.origin = new Snippet('notch', points.origin)

  paths.example = new Path()
    .move(points.B)
    .curve(points.BCp2, points.CCp1, points.C)
    .setText("FreeSewing rocks", "text-xs fill-note center")

  paths.rotated = paths.example
    .rotate(180, points.origin, true)
    .attr("class", "dotted")

  return part
}
```
</Example>

## Notes

The rotated path is a shallow copy.
It will in other words not inherit the attributes of the original path.

If you want a deep copy, including the attributes, set the third parameter to true:

`Path.rotate(deg, origin, true)`