Create any (regular) polygon geometry (of class geom) either by specifying anchor values or by sketching it.

gs_polygon(
  anchor = NULL,
  window = NULL,
  features = 1,
  vertices = 3,
  regular = FALSE,
  ...
)

gs_triangle(anchor = NULL, window = NULL, features = 1, ...)

gs_square(anchor = NULL, window = NULL, features = 1, ...)

gs_rectangle(anchor = NULL, window = NULL, features = 1, ...)

gs_hexagon(anchor = NULL, window = NULL, features = 1, ...)

Arguments

anchor

[geom(1)|data.frame(1)]
Object to derive the geom from. It must include column names x, y and optionally a custom fid.

window

[data.frame(1)]
in case the reference window deviates from the bounding box of anchor (minimum and maximum values), specify this here.

features

[integerish(1)]
number of polygons to create.

vertices

[integerish(.)]
number of vertices per polygon; will be recycled if it does not have as many elements as specified in features.

regular

[logical(1)]
should the polygon be regular, i.e. point symmetric (TRUE) or should the vertices be selected as provided by anchor (FALSE, default)?

...

[various]
graphical parameters to gt_locate, in case points are sketched; see gpar

Value

A geom.

Details

The argument anchor indicates how the geom is created:

  • if anchor is set, the geom is created parametrically from the points given in anchor,

  • if it is not set either window or a default window between 0 and 1 is opened to sketch the geom.

The argument regular determines how the vertices provided in anchor or via template are transformed into a polygon:

  • if regular = FALSE the resulting polygon is created from all vertices in anchor,

  • if regular = TRUE, only the first two vertices are considered, as center and indicating the distance to the (outer) radius.

Functions

  • gs_triangle: wrapper of gs_polygon where vertices = 3 and regular = TRUE.

  • gs_square: wrapper of gs_polygon where vertices = 4 and regular = TRUE.

  • gs_rectangle: wrapper of gs_polygon where vertices = 2, regular = FALSE and the two complementing corners are derived from the two given opposing corners.

  • gs_hexagon: wrapper of gs_polygon where vertices = 6 and regular = TRUE.

See also

Other geometry shapes: gs_line(), gs_point(), gs_random()

Examples

# 1. create a polygon programmatically
coords <- data.frame(x = c(0, 40, 40, 0),
                     y = c(0, 0, 40, 40))

# if no window is set, the bounding box will be set as window
aGeom <- gs_polygon(anchor = coords)
visualise(aGeom)


# derive a regular polygon from the coordinates
aPolygon <- gs_polygon(anchor = coords, vertices = 6, regular = TRUE)
visualise(aPolygon, linecol = "green")
visualise(aGeom, new = FALSE)


# the vertices are plottet relative to the window
window <- data.frame(x = c(-50, 50),
                     y = c(-50, 50))
aPolygon <- setWindow(x = aPolygon, to = window)
visualise(aPolygon, fillcol = "deeppink")

# using a geom as anchor retains its properties (such as the window)
aRectangle <- gs_rectangle(anchor = aPolygon)
visualise(aRectangle, new = FALSE)


# 2. sketch a hexagon
if(dev.interactive()){
  aHexagon <- gs_hexagon(features = 1)
  visualise(aHexagon, linecol = "deeppink", linetype = 2, new = FALSE)
}