## Approximating half circle arc with small perturbations
N <- 50
u <- linspace(0, pi, N)
x <- cos(u) + 0.05 * randn(1, N)
y <- sin(u) + 0.05 * randn(1, N)
n <- 8
cfit1 <- curvefit(u, x, y, n)
## Not run:
# plot(x, y, col = "darkgray", pch = 19, asp = 1)
# xp <- cfit1$xp; yp <- cfit1$yp
# lines(xp, yp, col="blue")
# grid()## End(Not run)
## Fix the end points at t = 0 and t = pi
U <- c(0, pi)
V <- matrix(c(1, 0, -1, 0), 2, 2, byrow = TRUE)
cfit2 <- curvefit(u, x, y, n, U, V)
## Not run:
# xp <- cfit2$xp; yp <- cfit2$yp
# lines(xp, yp, col="red")## End(Not run)
## Not run:
# ## Archimedian spiral
# n <- 8
# u <- linspace(0, 3*pi, 50)
# a <- 1.0
# x <- as.matrix(a*u*cos(u))
# y <- as.matrix(a*u*sin(u))
# plot(x, y, type = "p", pch = 19, col = "darkgray", asp = 1)
# lines(x, y, col = "darkgray", lwd = 3)
# cfit <- curvefit(u, x, y, n)
# px <- c(cfit$px); py <- c(cfit$py)
# v <- linspace(0, 3*pi, 200)
# xs <- polyval(px, v)
# ys <- polyval(py, v)
# lines(xs, ys, col = "navy")
# grid()## End(Not run)
Run the code above in your browser using DataLab