R: Return the points that would be used to draw an Xspline (or a...

xsplinePoints {grid} | R Documentation

## Return the points that would be used to draw an Xspline (or a Bezier curve).

### Description

Rather than drawing an Xspline (or Bezier curve), this function returns the points that would be used to draw the series of line segments for the Xspline. This may be useful to post-process the Xspline curve, for example, to clip the curve.

### Usage

    xsplinePoints(x)
    bezierPoints(x)

### Arguments

`x` | An Xspline grob, as produced by the `xsplineGrob()` function (or a beziergrob, as produced by the `bezierGrob()` function).

### Details

The points returned by this function will only be relevant for the drawing context in force when this function was called.

### Value

Depends on how many Xsplines would be drawn. If only one, then a list with two components, named x and y, both of which are unit objects (in inches). If several Xsplines would be drawn then the result of this function is a list of lists.

### Author(s)

Paul Murrell

### See Also

`xsplineGrob` and `bezierGrob`

### Examples

    grid.newpage()
    xsg <- xsplineGrob(c(.1, .1, .9, .9), c(.1, .9, .9, .1), shape=1)
    grid.draw(xsg)
    trace <- xsplinePoints(xsg)
    grid.circle(trace$x, trace$y, default.units="inches", r=unit(.5, "mm"))

    grid.newpage()
    vp <- viewport(width=.5)
    xg <- xsplineGrob(x=c(0, .2, .4, .2, .5, .7, .9, .7),
                      y=c(.5, 1, .5, 0, .5, 1, .5, 0),
                      id=rep(1:2, each=4),
                      shape=1,
                      vp=vp)
    grid.draw(xg)
    trace <- xsplinePoints(xg)
    pushViewport(vp)
    invisible(lapply(trace, function(t) grid.lines(t$x, t$y, gp=gpar(col="red"))))
    popViewport()

    grid.newpage()
    bg <- bezierGrob(c(.2, .2, .8, .8), c(.2, .8, .8, .2))
    grid.draw(bg)
    trace <- bezierPoints(bg)
    grid.circle(trace$x, trace$y, default.units="inches", r=unit(.5, "mm"))

[Package grid version 4.0.5 Index]