Please consider this data below,

X = 0, 1, 2, 3, 4, 5

Y = 77, 62, 55, 67, 43, 88

I plan to draw a spline curve with this data, and calculate the length of lines truncated by the curve when y = 65.

Or just like the pic below, i would like to know the length of AB+CD.

Something like that could find the crossings coordinates, then you have to subtract/add to get the distances (you can use the fact that the sign of `crossings`

gives you the crossing direction).

```
X = c(0, 1, 2, 3, 4, 5)
Y = c(77, 62, 55, 67, 43, 88)
spl <- splinefun(X,Y)
new_x <- (1:5000)/100
new_y <- spl(new_x)
crossings <- diff(sign(new_y - 65))
x_crossings <- new_x[which(crossings != 0)]
plot(X,Y)
lines(new_x, new_y, col='red')
abline(h=65,col="grey",lty="dashed")
for(xc in x_crossings){
abline(v = xc, col="green4", lty="dotted")
}
```

^{Created on 2021-11-14 by the reprex package (v2.0.1)}

There might be a better way to find x for a given y, rather than computing the value at a bunch of points; I think there are `findZeros()`

functions in several packages, not sure if they'll give you the sign of the crossing (if it's really a concern, you might be able to use `spl(x, deriv=1)`

).