我正在尝试计算通过一系列 xy 坐标的贝塞尔样条曲线。cscvn
一个示例类似于Matlab中函数的以下输出(示例链接):
我相信(不再维护的)grid
包用于执行此操作(grid.xspline
功能?),但我无法安装该包的存档版本,并且没有找到与我想要的完全一致的任何示例.
这个bezier
包看起来也很有希望,但它很慢,我也不能完全正确:
library(bezier)
set.seed(1)
n <- 10
x <- runif(n)
y <- runif(n)
p <- cbind(x,y)
xlim <- c(min(x) - 0.1*diff(range(x)), c(max(x) + 0.1*diff(range(x))))
ylim <- c(min(y) - 0.1*diff(range(y)), c(max(y) + 0.1*diff(range(y))))
plot(p, xlim=xlim, ylim=ylim)
text(p, labels=seq(n), pos=3)
bp <- pointsOnBezier(cbind(x,y), n=100)
lines(bp$points)
arrows(bp$points[nrow(bp$points)-1,1], bp$points[nrow(bp$points)-1,2],
bp$points[nrow(bp$points),1], bp$points[nrow(bp$points),2]
)
如您所见,它不通过除结束值之外的任何点。
我将非常感谢这里的一些指导!