# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ example: PlanetApp.R
# Simulation of Earth orbiting around the SUn using the Euler ODE solver
importFromExamples("Planet.R") # source the class
PlanetApp <- function(verbose = FALSE) {
# x = 1, AU or Astronomical Units. Length of semimajor axis or the orbit
# of the Earth around the Sun.
x <- 1; vx <- 0; y <- 0; vy <- 6.28; t <- 0
state <- c(x, vx, y, vy, t)
dt <- 0.01
planet <- Planet()
planet@odeSolver <- setStepSize(planet@odeSolver, dt)
planet <- init(planet, initState = state)
rowvec <- vector("list")
i <- 1
# run infinite loop. stop with ESCAPE.
while (getState(planet)[5] <= 90) { # Earth orbit is 365 days around the sun
rowvec[[i]] <- list(t = getState(planet)[5], # just doing 3 months
x = getState(planet)[1], # to speed up for CRAN
vx = getState(planet)[2],
y = getState(planet)[3],
vy = getState(planet)[4])
for (j in 1:5) { # advances time
planet <- doStep(planet)
}
i <- i + 1
}
DT <- data.table::rbindlist(rowvec)
return(DT)
}
# run the application
solution <- PlanetApp()
select_rows <- seq(1, nrow(solution), 10) # do not overplot
solution <- solution[select_rows,]
plot(solution)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.