2021-10-17 18:26:00 +02:00
|
|
|
---
|
|
|
|
title: curveIntersectsY()
|
|
|
|
---
|
2021-08-25 16:09:31 +02:00
|
|
|
|
|
|
|
```js
|
|
|
|
array | Point | false utils.curveIntersectsY(
|
|
|
|
Point start,
|
|
|
|
Point cp1,
|
|
|
|
Point cp2,
|
|
|
|
Point end,
|
|
|
|
float y)
|
|
|
|
```
|
|
|
|
|
|
|
|
Finds the point(s) where a curve intersects a given Y-value.
|
|
|
|
|
2022-02-19 08:04:25 +01:00
|
|
|
This is a low-level variant
|
2022-01-12 19:28:46 +01:00
|
|
|
of [`Path.intersectsY()`](/reference/api/path/#pathintersectsy).
|
2021-08-25 16:09:31 +02:00
|
|
|
Instead of a path, you describe a single curve by passing the four
|
|
|
|
points that describes it.
|
|
|
|
|
2022-02-19 08:04:25 +01:00
|
|
|
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
|
2021-08-25 16:09:31 +02:00
|
|
|
multiple intersections are found.
|
|
|
|
|
2022-01-12 19:28:46 +01:00
|
|
|
<Example part="utils_curveintersectsy">A Utils.curveIntersectY() example</Example>
|
2021-08-25 16:09:31 +02:00
|
|
|
|
|
|
|
```js
|
|
|
|
let {
|
|
|
|
Point,
|
|
|
|
points,
|
|
|
|
Path,
|
|
|
|
paths,
|
|
|
|
utils,
|
|
|
|
snippets,
|
|
|
|
Snippet
|
|
|
|
} = part.shorthand();
|
|
|
|
|
|
|
|
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])
|
|
|
|
.attr("class", "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);
|
|
|
|
```
|