fix(reference:api): Revert incorrect Example formatting (#367)
This PR reverts the incorrect lint/prettier changes applied to <Example> code in the reference Core API docs l by the husky pre-commit hook, the problem mentioned in Issue #333. (These are just the changes for the Core API docs. Additional PRs will be filed for changes in the other reference, howtos, and guides documentation.) Co-authored-by: Benjamin Fan <ben-git@swinglonga.com> Reviewed-on: https://codeberg.org/freesewing/freesewing/pulls/367 Reviewed-by: Joost De Cock <joostdecock@noreply.codeberg.org> Co-authored-by: Benjamin Fan <benjamesben@noreply.codeberg.org> Co-committed-by: Benjamin Fan <benjamesben@noreply.codeberg.org>
This commit is contained in:
parent
a7eb3e0072
commit
ed8a166ea9
34 changed files with 421 additions and 471 deletions
|
@ -20,18 +20,17 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(5, 10)
|
points.from = new Point(5, 10)
|
||||||
points.to = new Point(95, 10)
|
points.to = new Point(95, 10)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.line(points.to)
|
.line(points.to)
|
||||||
.addClass('note dashed')
|
.addClass('note dashed')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
```
|
||||||
````
|
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
@ -42,4 +41,4 @@ as the two following calls yield the same result:
|
||||||
```js
|
```js
|
||||||
path.attr('class', 'fabric')
|
path.attr('class', 'fabric')
|
||||||
path.addClass('fabric')
|
path.addClass('fabric')
|
||||||
````
|
```
|
||||||
|
|
|
@ -24,15 +24,14 @@ This method is chainable as it returns the `Path` object
|
||||||
points.from = new Point(5, 10)
|
points.from = new Point(5, 10)
|
||||||
points.to = new Point(95, 10)
|
points.to = new Point(95, 10)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.line(points.to)
|
.line(points.to)
|
||||||
.addText('FreeSewing rocks')
|
.addText('FreeSewing rocks')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
```
|
||||||
````
|
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
@ -43,7 +42,7 @@ as the two following calls yield the same result:
|
||||||
```js
|
```js
|
||||||
path.attr('data-text', 'Hello')
|
path.attr('data-text', 'Hello')
|
||||||
path.addText('Hello')
|
path.addText('Hello')
|
||||||
````
|
```
|
||||||
|
|
||||||
The difference with [Path.setText()](/reference/api/path/addtext) is that this
|
The difference with [Path.setText()](/reference/api/path/addtext) is that this
|
||||||
method will add to the existing text whereas `Path.setText()` will overwrite
|
method will add to the existing text whereas `Path.setText()` will overwrite
|
||||||
|
|
|
@ -20,31 +20,31 @@ number|false path.angleAt(Point point)
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
||||||
|
|
||||||
points.A = new Point(45, 60)
|
points.A = new Point(45, 60)
|
||||||
points.B = new Point(10, 30)
|
points.B = new Point(10, 30)
|
||||||
points.BCp2 = new Point(40, 20)
|
points.BCp2 = new Point(40, 20)
|
||||||
points.C = new Point(90, 30)
|
points.C = new Point(90, 30)
|
||||||
points.CCp1 = new Point(50, -30)
|
points.CCp1 = new Point(50, -30)
|
||||||
points.D = new Point(50, 80)
|
points.D = new Point(50, 80)
|
||||||
points.DCp1 = new Point(70, 30)
|
points.DCp1 = new Point(70, 30)
|
||||||
|
|
||||||
paths.demo = new Path()
|
paths.demo = new Path()
|
||||||
.move(points.D)
|
.move(points.D)
|
||||||
.curve(points.DCp1, points.DCp1, points.C)
|
.curve(points.DCp1, points.DCp1, points.C)
|
||||||
.curve(points.CCp1, points.BCp2, points.B)
|
.curve(points.CCp1, points.BCp2, points.B)
|
||||||
.line(points.A)
|
.line(points.A)
|
||||||
|
|
||||||
points.testPoint = paths.demo.shiftFractionAlong(0.55)
|
points.testPoint = paths.demo.shiftFractionAlong(0.55)
|
||||||
snippets.point = new Snippet("notch", points.testPoint)
|
snippets.point = new Snippet("notch", points.testPoint)
|
||||||
|
|
||||||
let angle = paths.demo.angleAt(points.testPoint)
|
let angle = paths.demo.angleAt(points.testPoint)
|
||||||
//draw a tangent path
|
//draw a tangent path
|
||||||
paths.tangent = new Path()
|
paths.tangent = new Path()
|
||||||
.move(points.testPoint.shift(angle, -30))
|
.move(points.testPoint.shift(angle, -30))
|
||||||
.line(points.testPoint.shift(angle, 30))
|
.line(points.testPoint.shift(angle, 30))
|
||||||
.attr("class", "lining dashed")
|
.attr("class", "lining dashed")
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
|
@ -28,20 +28,19 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 20)
|
points.from = new Point(10, 20)
|
||||||
points.cp1 = new Point(20, -10)
|
points.cp1 = new Point(20, -10)
|
||||||
points.cp2 = new Point(50, 50)
|
points.cp2 = new Point(50, 50)
|
||||||
points.to = new Point(70, 20)
|
points.to = new Point(70, 20)
|
||||||
|
|
||||||
paths.example = new Path()
|
paths.example = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.curve(points.cp1, points.cp2, points.to)
|
.curve(points.cp1, points.cp2, points.to)
|
||||||
.attr("class", "canvas")
|
.attr("class", "canvas")
|
||||||
.setText("FreeSewing rocks", "text-xs center")
|
.setText("FreeSewing rocks", "text-xs center")
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -57,4 +56,3 @@ all call this method under the hood.
|
||||||
|
|
||||||
See [Using Attributes](/howtos/code/attributes)
|
See [Using Attributes](/howtos/code/attributes)
|
||||||
for information about custom Attributes that can be used with Paths.
|
for information about custom Attributes that can be used with Paths.
|
||||||
```
|
|
||||||
|
|
|
@ -36,23 +36,22 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 20)
|
points.from = new Point(10, 20)
|
||||||
points.origin = new Point(40, 0)
|
points.origin = new Point(40, 0)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.circleSegment(90, points.origin)
|
.circleSegment(90, points.origin)
|
||||||
.setText("→ Path.circleSegment() →", "text-sm center fill-note")
|
.setText("→ Path.circleSegment() →", "text-sm center fill-note")
|
||||||
|
|
||||||
paths.helper = new Path()
|
paths.helper = new Path()
|
||||||
.move(paths.line.start())
|
.move(paths.line.start())
|
||||||
.line(points.origin)
|
.line(points.origin)
|
||||||
.line(paths.line.end())
|
.line(paths.line.end())
|
||||||
.setClass('dotted stroke-sm')
|
.setClass('dotted stroke-sm')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -20,20 +20,18 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 20)
|
points.from = new Point(10, 20)
|
||||||
points.cp2 = new Point(60, 30)
|
points.cp2 = new Point(60, 30)
|
||||||
points.to = new Point(90, 20)
|
points.to = new Point(90, 20)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.\_curve(points.cp2, points.to)
|
._curve(points.cp2, points.to)
|
||||||
.close()
|
.close()
|
||||||
.reverse() // To keep text from being upside-down
|
.reverse() // To keep text from being upside-down
|
||||||
.setText('Path.\_close()', 'text-sm right fill-note')
|
.setText('Path._close()', 'text-sm right fill-note')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -21,19 +21,17 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 20)
|
points.from = new Point(10, 20)
|
||||||
points.cp1 = new Point(40, 0)
|
points.cp1 = new Point(40, 0)
|
||||||
points.cp2 = new Point(60, 40)
|
points.cp2 = new Point(60, 40)
|
||||||
points.to = new Point(90, 20)
|
points.to = new Point(90, 20)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.curve(points.cp1, points.cp2, points.to)
|
.curve(points.cp1, points.cp2, points.to)
|
||||||
.setText("Path.curve()", "text-sm center fill-note")
|
.setText("Path.curve()", "text-sm center fill-note")
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ title: Path.curve_()
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Path.curve_()` method draws a cubic Bézier curve from the current position
|
The `Path.curve_()` method draws a cubic Bézier curve from the current position
|
||||||
via two control points to a given endpoint. However, the end control point is
|
via two control points to a given endpoint. However, the end control point is
|
||||||
identical to the end point.
|
identical to the end point.
|
||||||
|
|
||||||
## Signature
|
## Signature
|
||||||
|
@ -18,10 +18,12 @@ This method is chainable as it returns the `Path` object
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
|
|
||||||
<Example caption="Example of the Path.curve\_() method">
|
<Example caption="Example of the Path.curve\_() method">
|
||||||
|
|
||||||
```js
|
```js
|
||||||
;({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 20)
|
points.from = new Point(10, 20)
|
||||||
points.cp1 = new Point(40, 0)
|
points.cp1 = new Point(40, 0)
|
||||||
points.to = new Point(90, 20)
|
points.to = new Point(90, 20)
|
||||||
|
@ -29,8 +31,8 @@ This method is chainable as it returns the `Path` object
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.curve_(points.cp1, points.to)
|
.curve_(points.cp1, points.to)
|
||||||
.setText('Path.curve_()', 'text-sm center fill-note')
|
.setText("Path.curve_()", "text-sm center fill-note")
|
||||||
.attr('data-text-dy', -1)
|
.attr("data-text-dy", -1)
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,22 +20,20 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
||||||
|
|
||||||
points.A = new Point(45, 60)
|
points.A = new Point(45, 60)
|
||||||
points.B = new Point(10, 30)
|
points.B = new Point(10, 30)
|
||||||
points.BCp2 = new Point(40, 20)
|
points.BCp2 = new Point(40, 20)
|
||||||
points.C = new Point(90, 30)
|
points.C = new Point(90, 30)
|
||||||
points.CCp1 = new Point(50, -30)
|
points.CCp1 = new Point(50, -30)
|
||||||
|
|
||||||
paths.demo = new Path()
|
paths.demo = new Path()
|
||||||
.move(points.A)
|
.move(points.A)
|
||||||
.line(points.B)
|
.line(points.B)
|
||||||
.curve(points.BCp2, points.CCp1, points.C)
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
|
||||||
snippets.end = new Snippet("notch", paths.demo.end())
|
snippets.end = new Snippet("notch", paths.demo.end())
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -20,17 +20,15 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.top = new Point(50, 0)
|
points.top = new Point(50, 0)
|
||||||
points.left = new Point (20,50)
|
points.left = new Point (20,50)
|
||||||
points.right = new Point (80,50)
|
points.right = new Point (80,50)
|
||||||
|
|
||||||
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
||||||
paths.b = new Path().move(points.right).line(points.left).setText('b').hide()
|
paths.b = new Path().move(points.right).line(points.left).setText('b').hide()
|
||||||
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -15,39 +15,38 @@ Path path.insop(string id, Path path)
|
||||||
This method is chainable as it returns the `Path` object
|
This method is chainable as it returns the `Path` object
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
<Example caption="Example of the Path.insop() method">
|
<Example caption="Example of the Path.insop() method">
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.left = new Point(10,10)
|
points.left = new Point(10,10)
|
||||||
points.dartLeft = new Point(40, 10)
|
points.dartLeft = new Point(40, 10)
|
||||||
points.dartTip = new Point(50, 50)
|
points.dartTip = new Point(50, 50)
|
||||||
points.dartRight = new Point(60, 10)
|
points.dartRight = new Point(60, 10)
|
||||||
points.right = new Point(90, 10)
|
points.right = new Point(90, 10)
|
||||||
|
|
||||||
paths.withoutDart = new Path()
|
paths.withoutDart = new Path()
|
||||||
.move(points.left)
|
.move(points.left)
|
||||||
.line(points.dartLeft)
|
.line(points.dartLeft)
|
||||||
.noop('dart')
|
.noop('dart')
|
||||||
.line(points.right)
|
.line(points.right)
|
||||||
|
|
||||||
paths.withDart = paths.withoutDart
|
paths.withDart = paths.withoutDart
|
||||||
.clone()
|
.clone()
|
||||||
.insop(
|
.insop(
|
||||||
'dart',
|
'dart',
|
||||||
new Path()
|
new Path()
|
||||||
.line(points.dartTip)
|
.line(points.dartTip)
|
||||||
.line(points.dartRight)
|
.line(points.dartRight)
|
||||||
)
|
)
|
||||||
.attr('style', 'stroke-width: 2px; stroke-opacity: 0.5; stroke: orange;')
|
.attr('style', 'stroke-width: 2px; stroke-opacity: 0.5; stroke: orange;')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
This is often used to insert darts into a path.
|
This is often used to insert darts into a path.
|
||||||
```
|
|
||||||
|
|
|
@ -21,17 +21,15 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(10, 10)
|
points.from = new Point(10, 10)
|
||||||
points.to = new Point(90, 10)
|
points.to = new Point(90, 10)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.line(points.to)
|
.line(points.to)
|
||||||
.setText("Path.line()", "text-sm center fill-note")
|
.setText("Path.line()", "text-sm center fill-note")
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -22,31 +22,29 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.left = new Point(10,10)
|
points.left = new Point(10,10)
|
||||||
points.dartLeft = new Point(40, 10)
|
points.dartLeft = new Point(40, 10)
|
||||||
points.dartTip = new Point(50, 50)
|
points.dartTip = new Point(50, 50)
|
||||||
points.dartRight = new Point(60, 10)
|
points.dartRight = new Point(60, 10)
|
||||||
points.right = new Point(90, 10)
|
points.right = new Point(90, 10)
|
||||||
|
|
||||||
paths.withoutDart = new Path()
|
paths.withoutDart = new Path()
|
||||||
.move(points.left)
|
.move(points.left)
|
||||||
.line(points.dartLeft)
|
.line(points.dartLeft)
|
||||||
.noop('dart')
|
.noop('dart')
|
||||||
.line(points.right)
|
.line(points.right)
|
||||||
|
|
||||||
paths.withDart = paths.withoutDart
|
paths.withDart = paths.withoutDart
|
||||||
.clone()
|
.clone()
|
||||||
.insop(
|
.insop(
|
||||||
'dart',
|
'dart',
|
||||||
new Path()
|
new Path()
|
||||||
.line(points.dartTip)
|
.line(points.dartTip)
|
||||||
.line(points.dartRight)
|
.line(points.dartRight)
|
||||||
)
|
)
|
||||||
.attr('style', 'stroke-width: 2px; stroke-opacity: 0.5; stroke: orange;')
|
.attr('style', 'stroke-width: 2px; stroke-opacity: 0.5; stroke: orange;')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -20,18 +20,17 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(5, 10)
|
points.from = new Point(5, 10)
|
||||||
points.to = new Point(95, 10)
|
points.to = new Point(95, 10)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.line(points.to)
|
.line(points.to)
|
||||||
.setClass('note dashed')
|
.setClass('note dashed')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
```
|
||||||
````
|
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
@ -42,4 +41,4 @@ as the two following calls yield the same result:
|
||||||
```js
|
```js
|
||||||
path.attr('class', 'fabric', true)
|
path.attr('class', 'fabric', true)
|
||||||
path.setClass('fabric')
|
path.setClass('fabric')
|
||||||
````
|
```
|
||||||
|
|
|
@ -21,17 +21,15 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.top = new Point(50, 0)
|
points.top = new Point(50, 0)
|
||||||
points.left = new Point (20,50)
|
points.left = new Point (20,50)
|
||||||
points.right = new Point (80,50)
|
points.right = new Point (80,50)
|
||||||
|
|
||||||
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
||||||
paths.b = new Path().move(points.right).line(points.left).setText('b').setHidden(true)
|
paths.b = new Path().move(points.right).line(points.left).setText('b').setHidden(true)
|
||||||
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -24,15 +24,14 @@ This method is chainable as it returns the `Path` object
|
||||||
points.from = new Point(5, 10)
|
points.from = new Point(5, 10)
|
||||||
points.to = new Point(95, 10)
|
points.to = new Point(95, 10)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.line(points.to)
|
.line(points.to)
|
||||||
.setText('FreeSewing rocks')
|
.setText('FreeSewing rocks')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
```
|
||||||
````
|
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
@ -43,7 +42,7 @@ as the two following calls yield the same result:
|
||||||
```js
|
```js
|
||||||
path.attr('data-text', 'Hello')
|
path.attr('data-text', 'Hello')
|
||||||
path.setText('Hello')
|
path.setText('Hello')
|
||||||
````
|
```
|
||||||
|
|
||||||
The difference with [Path.addText()](/reference/api/path/addtext) is that this
|
The difference with [Path.addText()](/reference/api/path/addtext) is that this
|
||||||
method will overwrite existing text on the path, whereas `Path.addText()` will
|
method will overwrite existing text on the path, whereas `Path.addText()` will
|
||||||
|
|
|
@ -21,24 +21,22 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.aFrom = new Point(10, 10)
|
points.aFrom = new Point(10, 10)
|
||||||
points.aCp1 = new Point(40, 40)
|
points.aCp1 = new Point(40, 40)
|
||||||
points.aCp2 = new Point(70, -20)
|
points.aCp2 = new Point(70, -20)
|
||||||
points.aTo = new Point(100, 10)
|
points.aTo = new Point(100, 10)
|
||||||
|
|
||||||
points.bCp2 = new Point(50,50)
|
points.bCp2 = new Point(50,50)
|
||||||
points.bTo = new Point(10,50)
|
points.bTo = new Point(10,50)
|
||||||
|
|
||||||
paths.smurve = new Path()
|
paths.smurve = new Path()
|
||||||
.move(points.aFrom)
|
.move(points.aFrom)
|
||||||
.curve(points.aCp1, points.aCp2,points.aTo)
|
.curve(points.aCp1, points.aCp2,points.aTo)
|
||||||
.smurve(points.bCp2, points.bTo)
|
.smurve(points.bCp2, points.bTo)
|
||||||
.reverse() // Puts text at the end
|
.reverse() // Puts text at the end
|
||||||
.setText('Path.smurve()')
|
.setText('Path.smurve()')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ Path path.smurve_(Point cp2, Point end)
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
This method is chainable as it returns the `Path` object
|
This method is chainable as it returns the `Path` objecti
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
@ -23,23 +23,21 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.aFrom = new Point(10, 10)
|
points.aFrom = new Point(10, 10)
|
||||||
points.aCp1 = new Point(40, 40)
|
points.aCp1 = new Point(40, 40)
|
||||||
points.aCp2 = new Point(70, -20)
|
points.aCp2 = new Point(70, -20)
|
||||||
points.aTo = new Point(100, 10)
|
points.aTo = new Point(100, 10)
|
||||||
|
|
||||||
points.bTo = new Point(10,50)
|
points.bTo = new Point(10,50)
|
||||||
|
|
||||||
paths.smurve = new Path()
|
paths.smurve = new Path()
|
||||||
.move(points.aFrom)
|
.move(points.aFrom)
|
||||||
.curve(points.aCp1, points.aCp2,points.aTo)
|
.curve(points.aCp1, points.aCp2,points.aTo)
|
||||||
.smurve\_(points.bTo)
|
.smurve_(points.bTo)
|
||||||
.reverse() // Puts text at the end
|
.reverse() // Puts text at the end
|
||||||
.setText('Path.smurve()')
|
.setText('Path.smurve()')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -20,22 +20,20 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
({ Point, points, Path, paths, snippets, Snippet, part }) => {
|
||||||
|
|
||||||
points.A = new Point(45, 60)
|
points.A = new Point(45, 60)
|
||||||
points.B = new Point(10, 30)
|
points.B = new Point(10, 30)
|
||||||
points.BCp2 = new Point(40, 20)
|
points.BCp2 = new Point(40, 20)
|
||||||
points.C = new Point(90, 30)
|
points.C = new Point(90, 30)
|
||||||
points.CCp1 = new Point(50, -30)
|
points.CCp1 = new Point(50, -30)
|
||||||
|
|
||||||
paths.demo = new Path()
|
paths.demo = new Path()
|
||||||
.move(points.A)
|
.move(points.A)
|
||||||
.line(points.B)
|
.line(points.B)
|
||||||
.curve(points.BCp2, points.CCp1, points.C)
|
.curve(points.BCp2, points.CCp1, points.C)
|
||||||
|
|
||||||
snippets.end = new Snippet("notch", paths.demo.start())
|
snippets.end = new Snippet("notch", paths.demo.start())
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -23,17 +23,17 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.from = new Point(5, 20)
|
points.from = new Point(5, 20)
|
||||||
points.cp2 = new Point(60, 50)
|
points.cp2 = new Point(60, 50)
|
||||||
points.to = new Point(90, 20)
|
points.to = new Point(90, 20)
|
||||||
|
|
||||||
paths.line = new Path()
|
paths.line = new Path()
|
||||||
.move(points.from)
|
.move(points.from)
|
||||||
.\_curve(points.cp2, points.to)
|
._curve(points.cp2, points.to)
|
||||||
.setText("Path.\_curve()", "text-sm center fill-note")
|
.setText("Path._curve()", "text-sm center fill-note")
|
||||||
.attr("data-text-dy", -1)
|
.attr("data-text-dy", -1)
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
````
|
````
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
title: Path.unhide()
|
title: Path.unhide()
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Path.unhide()` method unhides the path so it appears in the output. By
|
The `Path.unhide()` method unhides the path so it appears in the output. By
|
||||||
default, paths are not hidden. So you should only call this on path previously
|
default, paths are not hidden. So you should only call this on path previously
|
||||||
hidden via `Path.hide()`.
|
hidden via `Path.hide()`.
|
||||||
|
|
||||||
|
@ -22,17 +22,15 @@ This method is chainable as it returns the `Path` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.top = new Point(50, 0)
|
points.top = new Point(50, 0)
|
||||||
points.left = new Point (20,50)
|
points.left = new Point (20,50)
|
||||||
points.right = new Point (80,50)
|
points.right = new Point (80,50)
|
||||||
|
|
||||||
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
paths.a = new Path().move(points.top).line(points.right).setText('a')
|
||||||
paths.b = new Path().move(points.right).line(points.left).setText('b').hide().unhide()
|
paths.b = new Path().move(points.right).line(points.left).setText('b').hide().unhide()
|
||||||
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
paths.c = new Path().move(points.left).line(points.top).setText('c')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -28,20 +28,18 @@ This method is chainable as it returns the `Point` object
|
||||||
.addCircle(3, 'lining dashed')
|
.addCircle(3, 'lining dashed')
|
||||||
.addCircle(7, 'mark dashed')
|
.addCircle(7, 'mark dashed')
|
||||||
|
|
||||||
points.b = new Point(50, 10)
|
points.b = new Point(50, 10)
|
||||||
.addCircle(1, 'interfacing')
|
.addCircle(1, 'interfacing')
|
||||||
.addCircle(3, 'fabric')
|
.addCircle(3, 'fabric')
|
||||||
.addCircle(5, 'lining')
|
.addCircle(5, 'lining')
|
||||||
.addCircle(7, 'mark')
|
.addCircle(7, 'mark')
|
||||||
.addCircle(9, 'note')
|
.addCircle(9, 'note')
|
||||||
|
|
||||||
points.c = new Point(70, 10)
|
points.c = new Point(70, 10)
|
||||||
.addCircle(3, 'interfacing')
|
.addCircle(3, 'interfacing')
|
||||||
.addCircle(7, 'mark lashed')
|
.addCircle(7, 'mark lashed')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -28,19 +28,18 @@ This method is chainable as it returns the `Point` object
|
||||||
.addText('FreeSewing')
|
.addText('FreeSewing')
|
||||||
.addText('rocks')
|
.addText('rocks')
|
||||||
|
|
||||||
// Avoid the text getting cropped
|
// Avoid the text getting cropped
|
||||||
paths.hidden = new Path()
|
paths.hidden = new Path()
|
||||||
.move(points.anchor)
|
.move(points.anchor)
|
||||||
.line(points.anchor.shift(0, 80))
|
.line(points.anchor.shift(0, 80))
|
||||||
.addClass('hidden')
|
.addClass('hidden')
|
||||||
|
|
||||||
return part
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
Remember to [use translation keys, not text](/guides/best-practices#use-translation-keys)
|
Remember to [use translation keys, not text](/guides/best-practices#use-translation-keys)
|
||||||
```
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ Point point.attr(
|
||||||
|
|
||||||
If the third parameter is set to `true` it will call [`this.attributes.set()`](/reference/api/attributes/set/) instead, thereby overwriting the value of the attribute.
|
If the third parameter is set to `true` it will call [`this.attributes.set()`](/reference/api/attributes/set/) instead, thereby overwriting the value of the attribute.
|
||||||
|
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
This method is chainable as it returns the `Point` object
|
This method is chainable as it returns the `Point` object
|
||||||
:::
|
:::
|
||||||
|
@ -28,19 +29,18 @@ This method is chainable as it returns the `Point` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.anchor = new Point(100, 25)
|
points.anchor = new Point(100, 25)
|
||||||
.attr('data-text', 'FreeSewing')
|
.attr('data-text', 'FreeSewing')
|
||||||
.attr('data-text', 'rocks')
|
.attr('data-text', 'rocks')
|
||||||
|
|
||||||
// Avoid the text getting cropped
|
// Avoid the text getting cropped
|
||||||
paths.hidden = new Path()
|
paths.hidden = new Path()
|
||||||
.move(points.anchor)
|
.move(points.anchor)
|
||||||
.line(points.anchor.shift(0, 80))
|
.line(points.anchor.shift(0, 80))
|
||||||
.addClass('hidden')
|
.addClass('hidden')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -48,4 +48,3 @@ return part
|
||||||
|
|
||||||
See [Using Attributes](/howtos/code/attributes)
|
See [Using Attributes](/howtos/code/attributes)
|
||||||
for information about custom Attributes that can be used with Points.
|
for information about custom Attributes that can be used with Points.
|
||||||
```
|
|
||||||
|
|
|
@ -21,22 +21,21 @@ This method is chainable as it returns the `Point` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, Snippet, snippets, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, part }) => {
|
||||||
|
|
||||||
points.A = new Point(25, 25)
|
points.A = new Point(25, 25)
|
||||||
.setText("Point A", "text-xl")
|
.setText("Point A", "text-xl")
|
||||||
.attr("data-text-fill-opacity", "0.5")
|
.attr("data-text-fill-opacity", "0.5")
|
||||||
points.B = points.A.clone().setText("Point B")
|
points.B = points.A.clone().setText("Point B")
|
||||||
|
|
||||||
snippets.x = new Snippet("notch", points.A)
|
snippets.x = new Snippet("notch", points.A)
|
||||||
|
|
||||||
// Avoid the text getting cropped
|
// Avoid the text getting cropped
|
||||||
paths.hidden = new Path()
|
paths.hidden = new Path()
|
||||||
.move(new Point(20,10))
|
.move(new Point(20,10))
|
||||||
.move(new Point(75,30))
|
.move(new Point(75,30))
|
||||||
.addClass('hidden')
|
.addClass('hidden')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -46,4 +45,3 @@ return part
|
||||||
The [`Point.copy()`](/reference/api/point/copy/) method will only copy the
|
The [`Point.copy()`](/reference/api/point/copy/) method will only copy the
|
||||||
point's coordinates, whereas this `Point.clone()` method will also copy its
|
point's coordinates, whereas this `Point.clone()` method will also copy its
|
||||||
attributes.
|
attributes.
|
||||||
```
|
|
||||||
|
|
|
@ -31,24 +31,22 @@ This method is chainable as it returns the `Point` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, part }) => {
|
({ Point, points, part }) => {
|
||||||
|
|
||||||
points.a = new Point(30, 10)
|
points.a = new Point(30, 10)
|
||||||
.setCircle(3, 'lining dashed')
|
.setCircle(3, 'lining dashed')
|
||||||
.setCircle(7, 'mark dashed')
|
.setCircle(7, 'mark dashed')
|
||||||
|
|
||||||
points.b = new Point(50, 10)
|
points.b = new Point(50, 10)
|
||||||
.setCircle(1, 'interfacing')
|
.setCircle(1, 'interfacing')
|
||||||
.setCircle(3, 'fabric')
|
.setCircle(3, 'fabric')
|
||||||
.setCircle(5, 'lining')
|
.setCircle(5, 'lining')
|
||||||
.setCircle(7, 'mark')
|
.setCircle(7, 'mark')
|
||||||
.setCircle(9, 'note')
|
.setCircle(9, 'note')
|
||||||
|
|
||||||
points.c = new Point(70, 10)
|
points.c = new Point(70, 10)
|
||||||
.setCircle(3, 'interfacing')
|
.setCircle(3, 'interfacing')
|
||||||
.setCircle(7, 'mark lashed')
|
.setCircle(7, 'mark lashed')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
|
@ -25,23 +25,21 @@ This method is chainable as it returns the `Point` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, part }) => {
|
({ Point, points, Path, paths, part }) => {
|
||||||
|
|
||||||
points.anchor = new Point(100, 25)
|
points.anchor = new Point(100, 25)
|
||||||
.setText('FreeSewing')
|
.setText('FreeSewing')
|
||||||
.setText('rocks')
|
.setText('rocks')
|
||||||
|
|
||||||
// Avoid the text getting cropped
|
// Avoid the text getting cropped
|
||||||
paths.hidden = new Path()
|
paths.hidden = new Path()
|
||||||
.move(points.anchor)
|
.move(points.anchor)
|
||||||
.line(points.anchor.shift(0, 80))
|
.line(points.anchor.shift(0, 80))
|
||||||
.addClass('hidden')
|
.addClass('hidden')
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
Remember to [use translation keys, not text](/guides/best-practices#use-translation-keys)
|
Remember to [use translation keys, not text](/guides/best-practices#use-translation-keys)
|
||||||
```
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ title: Snippet.attr()
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Snippet.attr()` method can be used to add attributes to the Snippet
|
The `Snippet.attr()` method can be used to add attributes to the Snippet
|
||||||
object. It calls `this.attributes.add()` under the hood, and returns the
|
object. It calls `this.attributes.add()` under the hood, and returns the
|
||||||
Snippet object.
|
Snippet object.
|
||||||
|
|
||||||
If the third parameter is set to `true` it will call `this.attributes.set()`
|
If the third parameter is set to `true` it will call `this.attributes.set()`
|
||||||
|
@ -29,18 +29,17 @@ This method is chainable as it returns the `Snippet` object
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, Snippet, snippets, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, part }) => {
|
||||||
|
|
||||||
snippets.logo = new Snippet('logo', new Point(0,0))
|
snippets.logo = new Snippet('logo', new Point(0,0))
|
||||||
.attr("data-scale", 0.75)
|
.attr("data-scale", 0.75)
|
||||||
.attr("data-rotate", 180)
|
.attr("data-rotate", 180)
|
||||||
|
|
||||||
// Prevent clipping
|
// Prevent clipping
|
||||||
paths.diag = new Path()
|
paths.diag = new Path()
|
||||||
.move(new Point(-25,-10))
|
.move(new Point(-25,-10))
|
||||||
.move(new Point(25,35))
|
.move(new Point(25,35))
|
||||||
|
|
||||||
return part
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -48,4 +47,3 @@ return part
|
||||||
See [Using Attributes](/howtos/code/attributes)
|
See [Using Attributes](/howtos/code/attributes)
|
||||||
for information about what Attributes can be used with Snippets.
|
for information about what Attributes can be used with Snippets.
|
||||||
:::
|
:::
|
||||||
```
|
|
||||||
|
|
|
@ -21,22 +21,20 @@ This method is chainable as it returns the `Snippet` object
|
||||||
```js
|
```js
|
||||||
({ Point, Path, paths, Snippet, snippets, part }) => {
|
({ Point, Path, paths, Snippet, snippets, part }) => {
|
||||||
|
|
||||||
for (const i of [0,1,2,3,4,5,6]) {
|
for (const i of [0,1,2,3,4,5,6]) {
|
||||||
snippets[`demo${i}`] = new Snippet(
|
snippets[`demo${i}`] = new Snippet(
|
||||||
"logo",
|
"logo",
|
||||||
new Point(60*i, 0)
|
new Point(60*i, 0)
|
||||||
).rotate(60 * i)
|
).rotate(60 * i)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent clipping
|
||||||
|
paths.diag = new Path()
|
||||||
|
.move(new Point(-30,-50))
|
||||||
|
.move(new Point(400,50))
|
||||||
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent clipping
|
|
||||||
paths.diag = new Path()
|
|
||||||
.move(new Point(-30,-50))
|
|
||||||
.move(new Point(400,50))
|
|
||||||
|
|
||||||
return part
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
```
|
|
||||||
|
|
|
@ -21,22 +21,20 @@ This method is chainable as it returns the `Snippet` object
|
||||||
```js
|
```js
|
||||||
({ Point, Path, paths, Snippet, snippets, part }) => {
|
({ Point, Path, paths, Snippet, snippets, part }) => {
|
||||||
|
|
||||||
for (const i of [1,2,3,4,5,6]) {
|
for (const i of [1,2,3,4,5,6]) {
|
||||||
snippets[`demo${i}`] = new Snippet(
|
snippets[`demo${i}`] = new Snippet(
|
||||||
"logo",
|
"logo",
|
||||||
new Point(30\*i, 0)
|
new Point(30*i, 0)
|
||||||
).scale(i/10)
|
).scale(i/10)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent clipping
|
||||||
|
paths.diag = new Path()
|
||||||
|
.move(new Point(0,-30))
|
||||||
|
.move(new Point(200,20))
|
||||||
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent clipping
|
|
||||||
paths.diag = new Path()
|
|
||||||
.move(new Point(0,-30))
|
|
||||||
.move(new Point(200,20))
|
|
||||||
|
|
||||||
return part
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
```
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ Point | false utils.beamIntersectsLine(
|
||||||
<Example caption="A Utils.beamIntersectsLine() example">
|
<Example caption="A Utils.beamIntersectsLine() example">
|
||||||
|
|
||||||
```js
|
```js
|
||||||
;({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
||||||
points.A = new Point(45, 20)
|
points.A = new Point(45, 20)
|
||||||
points.B = new Point(60, 15)
|
points.B = new Point(60, 15)
|
||||||
points.C = new Point(10, 10)
|
points.C = new Point(10, 10)
|
||||||
|
|
|
@ -28,41 +28,40 @@ multiple intersections are found.
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
||||||
|
|
||||||
points.start = new Point(10, 15)
|
points.start = new Point(10, 15)
|
||||||
points.cp1 = new Point(80, 10)
|
points.cp1 = new Point(80, 10)
|
||||||
points.cp2 = new Point(-50, 80)
|
points.cp2 = new Point(-50, 80)
|
||||||
points.end = new Point(110, 70)
|
points.end = new Point(110, 70)
|
||||||
|
|
||||||
paths.curve = new Path()
|
paths.curve = new Path()
|
||||||
.move(points.start)
|
.move(points.start)
|
||||||
.curve(points.cp1, points.cp2, points.end)
|
.curve(points.cp1, points.cp2, points.end)
|
||||||
|
|
||||||
for (let x of [30, 40]) {
|
for (let x of [30, 40]) {
|
||||||
points["from" + x] = new Point(x, 10)
|
points["from" + x] = new Point(x, 10)
|
||||||
points["to" + x] = new Point(x, 80)
|
points["to" + x] = new Point(x, 80)
|
||||||
paths["line" + x] = new Path()
|
paths["line" + x] = new Path()
|
||||||
.move(points["from" + x])
|
.move(points["from" + x])
|
||||||
.line(points["to" + x])
|
.line(points["to" + x])
|
||||||
.addClass("lining dashed")
|
.addClass("lining dashed")
|
||||||
|
}
|
||||||
|
|
||||||
|
snippets.i40 = new Snippet(
|
||||||
|
"notch",
|
||||||
|
utils.curveIntersectsX(points.start, points.cp1, points.cp2, points.end, 40)
|
||||||
|
)
|
||||||
|
|
||||||
|
for (let p of utils.curveIntersectsX(
|
||||||
|
points.start,
|
||||||
|
points.cp1,
|
||||||
|
points.cp2,
|
||||||
|
points.end,
|
||||||
|
30
|
||||||
|
))
|
||||||
|
snippets[p.y] = new Snippet("notch", p)
|
||||||
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
snippets.i40 = new Snippet(
|
|
||||||
"notch",
|
|
||||||
utils.curveIntersectsX(points.start, points.cp1, points.cp2, points.end, 40)
|
|
||||||
)
|
|
||||||
|
|
||||||
for (let p of utils.curveIntersectsX(
|
|
||||||
points.start,
|
|
||||||
points.cp1,
|
|
||||||
points.cp2,
|
|
||||||
points.end,
|
|
||||||
30
|
|
||||||
))
|
|
||||||
snippets[p.y] = new Snippet("notch", p)
|
|
||||||
|
|
||||||
return part
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -73,4 +72,3 @@ This is a low-level (and faster) variant
|
||||||
of [`Path.intersectsX()`](/reference/api/path/intersectsx).
|
of [`Path.intersectsX()`](/reference/api/path/intersectsx).
|
||||||
Instead of a path, you describe a single curve by passing the four
|
Instead of a path, you describe a single curve by passing the four
|
||||||
points that describes it.
|
points that describes it.
|
||||||
```
|
|
||||||
|
|
|
@ -22,47 +22,46 @@ a single intersection is found, and an array
|
||||||
of [Point](/reference/api/point/) objects if
|
of [Point](/reference/api/point/) objects if
|
||||||
multiple intersections are found.
|
multiple intersections are found.
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
|
## Example
|
||||||
<Example caption="A Utils.curveIntersectY() example">
|
<Example caption="A Utils.curveIntersectY() example">
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {
|
||||||
|
|
||||||
points.start = new Point(10, 45)
|
points.start = new Point(10, 45)
|
||||||
points.cp1 = new Point(50, 10)
|
points.cp1 = new Point(50, 10)
|
||||||
points.cp2 = new Point(0, 80)
|
points.cp2 = new Point(0, 80)
|
||||||
points.end = new Point(110, 70)
|
points.end = new Point(110, 70)
|
||||||
|
|
||||||
paths.curve = new Path()
|
paths.curve = new Path()
|
||||||
.move(points.start)
|
.move(points.start)
|
||||||
.curve(points.cp1, points.cp2, points.end)
|
.curve(points.cp1, points.cp2, points.end)
|
||||||
|
|
||||||
for (let y of [40, 50]) {
|
for (let y of [40, 50]) {
|
||||||
points["from" + y] = new Point(10, y)
|
points["from" + y] = new Point(10, y)
|
||||||
points["to" + y] = new Point(110, y)
|
points["to" + y] = new Point(110, y)
|
||||||
paths["line" + y] = new Path()
|
paths["line" + y] = new Path()
|
||||||
.move(points["from" + y])
|
.move(points["from" + y])
|
||||||
.line(points["to" + y])
|
.line(points["to" + y])
|
||||||
.addClass("lining dashed")
|
.addClass("lining dashed")
|
||||||
|
}
|
||||||
|
|
||||||
|
snippets.i50 = new Snippet(
|
||||||
|
"notch",
|
||||||
|
utils.curveIntersectsY(points.start, points.cp1, points.cp2, points.end, 50)
|
||||||
|
)
|
||||||
|
|
||||||
|
for (let p of utils.curveIntersectsY(
|
||||||
|
points.start,
|
||||||
|
points.cp1,
|
||||||
|
points.cp2,
|
||||||
|
points.end,
|
||||||
|
40
|
||||||
|
))
|
||||||
|
snippets[p.x] = new Snippet("notch", p)
|
||||||
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
|
|
||||||
snippets.i50 = new Snippet(
|
|
||||||
"notch",
|
|
||||||
utils.curveIntersectsY(points.start, points.cp1, points.cp2, points.end, 50)
|
|
||||||
)
|
|
||||||
|
|
||||||
for (let p of utils.curveIntersectsY(
|
|
||||||
points.start,
|
|
||||||
points.cp1,
|
|
||||||
points.cp2,
|
|
||||||
points.end,
|
|
||||||
40
|
|
||||||
))
|
|
||||||
snippets[p.x] = new Snippet("notch", p)
|
|
||||||
|
|
||||||
return part
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
|
|
||||||
|
@ -72,4 +71,3 @@ This is a low-level (and faster) variant
|
||||||
of [`Path.intersectsY()`](/reference/api/path/intersectsy).
|
of [`Path.intersectsY()`](/reference/api/path/intersectsy).
|
||||||
Instead of a path, you describe a single curve by passing the four
|
Instead of a path, you describe a single curve by passing the four
|
||||||
points that describes it.
|
points that describes it.
|
||||||
```
|
|
||||||
|
|
|
@ -31,45 +31,43 @@ multiple intersections are found.
|
||||||
```js
|
```js
|
||||||
({ Point, points, Path, paths, Snippet, snippets, utils, getId, part }) => {
|
({ Point, points, Path, paths, Snippet, snippets, utils, getId, part }) => {
|
||||||
|
|
||||||
points.A = new Point(10, 10)
|
points.A = new Point(10, 10)
|
||||||
points.Acp = new Point(310, 40)
|
points.Acp = new Point(310, 40)
|
||||||
points.B = new Point(110, 70)
|
points.B = new Point(110, 70)
|
||||||
points.Bcp = new Point(-210, 40)
|
points.Bcp = new Point(-210, 40)
|
||||||
|
|
||||||
points.C = new Point(20, -5)
|
points.C = new Point(20, -5)
|
||||||
points.Ccp = new Point(60, 300)
|
points.Ccp = new Point(60, 300)
|
||||||
points.D = new Point(100, 85)
|
points.D = new Point(100, 85)
|
||||||
points.Dcp = new Point(70, -220)
|
points.Dcp = new Point(70, -220)
|
||||||
paths.curveA = new Path()
|
paths.curveA = new Path()
|
||||||
.move(points.A)
|
.move(points.A)
|
||||||
.curve(points.Acp, points.Bcp, points.B)
|
.curve(points.Acp, points.Bcp, points.B)
|
||||||
paths.curveB = new Path()
|
paths.curveB = new Path()
|
||||||
.move(points.C)
|
.move(points.C)
|
||||||
.curve(points.Ccp, points.Dcp, points.D)
|
.curve(points.Ccp, points.Dcp, points.D)
|
||||||
|
|
||||||
const intersections = utils.curvesIntersect(
|
const intersections = utils.curvesIntersect(
|
||||||
points.A,
|
points.A,
|
||||||
points.Acp,
|
points.Acp,
|
||||||
points.Bcp,
|
points.Bcp,
|
||||||
points.B,
|
points.B,
|
||||||
points.C,
|
points.C,
|
||||||
points.Ccp,
|
points.Ccp,
|
||||||
points.Dcp,
|
points.Dcp,
|
||||||
points.D
|
points.D
|
||||||
)
|
)
|
||||||
|
|
||||||
if (intersections) {
|
if (intersections) {
|
||||||
if (intersections instanceof Array) {
|
if (intersections instanceof Array) {
|
||||||
for (const p of intersections)
|
for (const p of intersections)
|
||||||
snippets[getId()] = new Snippet('notch', p)
|
snippets[getId()] = new Snippet('notch', p)
|
||||||
} else {
|
} else {
|
||||||
snippets[getId()] = new Snippet('notch', intersections)
|
snippets[getId()] = new Snippet('notch', intersections)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return part
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return part
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
```
|
||||||
</Example>
|
</Example>
|
||||||
```
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue