intersectn: Compute convex hull of intersection of two sets of points

View source: R/intersectn.R

intersectnR Documentation

Compute convex hull of intersection of two sets of points

Description

Compute convex hull of intersection of two sets of points

Usage

intersectn(
  ps1,
  ps2,
  tol = 0,
  return.chs = TRUE,
  options = "Tv",
  fp = NULL,
  autoscale = FALSE
)

Arguments

ps1

First set of points

ps2

Second set of points

tol

Tolerance used to determine if a feasible point lies within the convex hulls of both points and to round off the points generated by the halfspace intersection, which sometimes produces points very close together.

return.chs

If TRUE (default) return the convex hulls of the first and second sets of points, as well as the convex hull of the intersection.

options

Options passed to halfspacen. By default this is Tv.

fp

Coordinates of feasible point, i.e. a point known to lie in the hulls of ps1 and ps2. The feasible point is required for halfspacen to find the intersection. intersectn tries to find the feasible point automatically using the linear program in feasible.point, but currently the linear program fails on some examples where there is an obvious solution. This option overrides the automatic search for a feasible point

autoscale

Experimental in v0.4.2 Automatically scale the points to lie in a sensible numeric range. May help to correct some numerical issues.

Value

List containing named elements: ch1, the convex hull of the first set of points, with volumes, areas and normals (see convhulln; ch2, the convex hull of the first set of points, with volumes, areas and normals; ps, the intersection points of convex hulls ch1 and ch2; and ch, the convex hull of the intersection points, with volumes, areas and normals.

Note

intersectn was introduced in geometry 0.4.0, and is still under development. It is worth checking results for unexpected behaviour.

Author(s)

David Sterratt

See Also

convhulln, halfspacen, inhulln, feasible.point

Examples

# Two overlapping boxes
ps1 <- rbox(0, C=0.5)
ps2 <- rbox(0, C=0.5) + 0.5
out <- intersectn(ps1, ps2)
message("Volume of 1st convex hull: ", out$ch1$vol)
message("Volume of 2nd convex hull: ", out$ch2$vol)
message("Volume of intersection convex hull: ", out$ch$vol)

geometry documentation built on Feb. 16, 2023, 10:08 p.m.