R/JamPolygon.R
add_orientation_JamPolygon.Rd
Define orientation for each polygon, clockwise or counterclockwise
add_orientation_JamPolygon(
jp,
flip_sign = 1,
include_holes = FALSE,
include_clockwise = FALSE,
include_parent = FALSE,
verbose = FALSE,
...
)
JamPolygon
integer
to indicate whether the orientation should
be flipped, inverting the meaning of all returned values.
This argument is intended to be used when defining inner and outer
borders alongside something like vwline::grid.vwline()
which
defines border on the left and right, as it travels from point
to point. By using flip_sign=-1
it will flip the right and
left sides accordingly.
logical
indicating whether to include additional columns to describe
multi-part polygons. The clockwise direction is used to define
the inner and outer edge of the border, usually defined as
left or right, in relation to the direction the line is drawn.
Nested multi-part polygons define interior holes, and are distinguished
from adjacent polygons.
"polygon_clockwise"
: 1 clockwise, -1 counter-clockwise
"polygon_holes"
: 1 is a solid polygon, -1 is a hole inside
another polygon indicated with "polygon_parent"
.
"polygon_parent"
: integer index used to indicate the parent
polygon for nested multi-part polygons. The index will indicate
itself, when the polygon is not nested inside another polygon.
logical
indicating whether to print verbose output.
additional arguments are ignored
JamPolygon
with column "orientation"
added to
slot "polygons".
Todo:
When polygons are nested, which is intended to create holes inside one larger polygon, the hole should have its orientation flipped so that the border is drawn on the opposite side per its orientation. So the task is to determine whether a polygon is the hole of another polygon.
Other JamPolygon:
JamPolygon-class
,
Venndir-class
,
[,JamPolygon,ANY,ANY,ANY-method
,
area_JamPolygon()
,
bbox_JamPolygon()
,
buffer_JamPolygon()
,
check_JamPolygon()
,
check_Venndir()
,
eulerr_to_JamPolygon()
,
farthest_point_JamPolygon()
,
find_venn_overlaps_JamPolygon()
,
has_point_in_JamPolygon()
,
intersect_JamPolygon()
,
label_fill_JamPolygon()
,
label_outside_JamPolygon()
,
label_segment_JamPolygon()
,
labelr_JamPolygon()
,
minus_JamPolygon()
,
nearest_point_JamPolygon()
,
nudge_JamPolygon()
,
plot.JamPolygon()
,
point_in_JamPolygon()
,
polyclip_to_JamPolygon()
,
polygon_circles()
,
polygon_ellipses()
,
sample_JamPolygon()
,
split_JamPolygon()
,
union_JamPolygon()
,
update_JamPolygon()
df3 <- data.frame(name=c("polygon1", "polygon2"),
label=c("polygon1", "polygon2"),
x=I(list(
list(c(1, 6, 6, 1),
c(2, 5, 5, 2),
c(3, 4, 4, 3)),
list(#c(11, 16, 16, 11),
c(12, 15, 15, 12),
c(13, 14, 14, 13))
)),
y=I(list(
list(c(1, 1, 6, 6),
c(2, 2, 5, 5),
c(3, 3, 4, 4)),
list(#c(1, 1, 6, 6),
c(2, 2, 5, 5),
c(3, 3, 4, 4))
)),
fill=c("gold", "firebrick"))
jp3 <- new("JamPolygon", polygons=df3);
plot(jp3);
add_orientation_JamPolygon(jp3,
include_holes=TRUE,
include_clockwise=TRUE,
include_parent=TRUE)
#> An object of class "JamPolygon"
#> Slot "polygons":
#> name label x y fill orientation
#> 1 polygon1 polygon1 c(1, 6, .... c(1, 1, .... gold 1, -1, 1
#> 2 polygon2 polygon2 c(12, 15.... c(2, 2, .... firebrick 1, -1
#> polygon_holes polygon_clockwise polygon_parent
#> 1 1, -1, 1 1, 1, 1 1, 1, 1
#> 2 1, -1 1, 1 1, 1
#>