# Polygonal Approximation of a Disc/Circle

`discpoly.Rd`

Generates a polygon representing a disc/circle (in planar
coordinates) as an object of one of three possible
classes: `"Polygon"`

from package sp,
`"owin"`

from package spatstat.geom, or
`"gpc.poly"`

from gpclib (if available).

## Usage

```
discpoly(center, radius, npoly = 64,
class = c("Polygon", "owin", "gpc.poly"),
hole = FALSE)
```

## Arguments

- center
numeric vector of length 2 (center coordinates of the circle).

- radius
single numeric value (radius of the circle).

- npoly
single integer. Number of edges of the polygonal approximation.

- class
class of the resulting polygon (partial name matching applies). For

`"owin"`

, this is just a wrapper around spatstat.geom's own`disc`

function.- hole
logical. Does the resulting polygon represent a hole?

## Value

A polygon of class `class`

representing a
circle/disc with `npoly`

edges accuracy.

If `class="gpc.poly"`

and this S4 class is not yet registered
in the current R session (by loading gpclib beforehand), only the
`pts`

slot of a `"gpc.poly"`

is returned with a warning.

## See also

`disc`

in package spatstat.geom.

## Examples

```
## Construct circles with increasing accuracy and of different spatial classes
disc1 <- discpoly(c(0,0), 5, npoly=4, class = "owin")
disc2 <- discpoly(c(0,0), 5, npoly=16, class = "Polygon")
disc3 <- discpoly(c(0,0), 5, npoly=64, class = "gpc.poly") # may warn
## Look at the results
print(disc1)
plot(disc1, axes=TRUE, main="", border=2)
str(disc2)
lines(disc2, col=3)
str(disc3) # a list or a formal "gpc.poly" (if gpclib is available)
if (is(disc3, "gpc.poly")) {
plot(disc3, add=TRUE, poly.args=list(border=4))
} else {
lines(disc3[[1]], col=4)
}
## to only _draw_ a circle
symbols(0, 0, circles=5, inches=FALSE, add=TRUE, fg=5)
```