makeframe: Display a single movie frame

View source: R/makeframe.R

makeframeR Documentation

Display a single movie frame

Description

Displays a single movie-frame in the R-console, exactly as used in a movie generated with makemovie.

Usage

makeframe(
  frame.draw,
  frame.index,
  width = 1080,
  height = 720,
  cex = 1,
  oversampling = 1,
  pngfile = NULL
)

Arguments

frame.draw

function that plots an individual frame. This function must have exactly one argument 'x', which can be integer (e.g. a simple frame index) or real (e.g. a time).

frame.index

list of frame indices 'x' to be included in the movie

width

integer number of pixels along the horizontal axis

height

integer number of pixels along the vertical axis

cex

number defining the overall scaling of line widths, font sizes, etc.

oversampling

integer specifying the oversampling factor along both dimensions. If larger than 1, frames are plotted with (width*oversampling)-by-(height*oversampling) pixels and then resized back to width-by-height. This can be used to make line objects and text move more smoothly.

pngfile

optional path+filename of output file to save the image. R must have write access to this file.

Value

Returns the displayed image as n-by-my-by 4 array, representing the 4 RGBA channels of height n and width m.

Author(s)

Danail Obreschkow

See Also

makemovie

Examples


## Example: Movie of a manual clock

# Function to draw a single clock face with two hands
frame = function(time) {
  oldpar = graphics::par(mar=c(0,0,0,0))
  nplot(xlim=c(-1.1,1.1),ylim=c(-1.1,1.1),pty='s')
  plotrix::draw.circle(0,0,1,col='#aaaaff')
  radius = c(0.5,0.9)
  speed = 2*pi/c(720,60)
  lwd = c(4,2)
  graphics::arrows(0,0,radius*sin(speed*time),radius*cos(speed*time),lwd=lwd)
  graphics::par(oldpar)
}

# Produce movie
## Not run: 
makeframe(frame,15,200,200)

## End(Not run)


obreschkow/cooltools documentation built on Nov. 16, 2024, 2:46 a.m.