
Compute convex hull of intersection of two sets of points
intersectn(
ps1,
ps2,
tol = 0,
return.chs = TRUE,
options = "Tv",
fp = NULL,
autoscale = FALSE
)
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.
First set of points
Second set of points
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.
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 passed to halfspacen
. By
default this is Tv
.
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
Experimental in v0.4.2 Automatically scale the points to lie in a sensible numeric range. May help to correct some numerical issues.
David Sterratt
convhulln
, halfspacen
,
inhulln
, feasible.point
# 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)
Run the code above in your browser using DataLab