1
0
Fork 0
freesewing/sites/dev/docs/reference/api/utils/curveintersectsy
Benjamin Fan ed8a166ea9 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>
2025-05-19 08:04:05 +02:00
..
readme.mdx fix(reference:api): Revert incorrect Example formatting (#367) 2025-05-19 08:04:05 +02:00

---
title: utils.curveIntersectsY()
---

The `utils.curveIntersectsY()` function finds the point(s) where a curve
intersects a given Y-value.

## Signature

```js
array | Point | false utils.curveIntersectsY(
  Point start,
  Point cp1,
  Point cp2,
  Point end,
  float y)
```

This returns `false` if no intersections are found,
a [Point](/reference/api/point/) object if
a single intersection is found, and an array
of [Point](/reference/api/point/) objects if
multiple intersections are found.


## Example
<Example caption="A Utils.curveIntersectY() example">
```js
({ Point, points, Path, paths, Snippet, snippets, utils, part }) => {

  points.start = new Point(10, 45)
  points.cp1 = new Point(50, 10)
  points.cp2 = new Point(0, 80)
  points.end = new Point(110, 70)

  paths.curve = new Path()
    .move(points.start)
    .curve(points.cp1, points.cp2, points.end)

  for (let y of [40, 50]) {
    points["from" + y] = new Point(10, y)
    points["to" + y] = new Point(110, y)
    paths["line" + y] = new Path()
      .move(points["from" + y])
      .line(points["to" + y])
      .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
}
```
</Example>

## Notes

This is a low-level (and faster) variant
of [`Path.intersectsY()`](/reference/api/path/intersectsy).
Instead of a path, you describe a single curve by passing the four
points that describes it.