Xin.convex.hullY {pcds} | R Documentation |
Points from one class inside the convex hull of the points from the other class
Description
Given two 2D data sets, Xp
and Yp
,
it returns the Xp
points
inside the convex hull of Yp
points.
See (Okabe et al. (2000); Ceyhan (2010); Sinclair (2016)) for more on Delaunay triangulation and the corresponding algorithm.
Usage
Xin.convex.hullY(Xp, Yp)
Arguments
Xp |
A set of 2D points which constitute the data set. |
Yp |
A set of 2D points which constitute the vertices of the Delaunay triangles. |
Value
Xp
points inside the convex hull of Yp
points
Author(s)
Elvan Ceyhan
References
Ceyhan E (2010).
“Extension of One-Dimensional Proximity Regions to Higher Dimensions.”
Computational Geometry: Theory and Applications, 43(9), 721-748.
Okabe A, Boots B, Sugihara K, Chiu SN (2000).
Spatial Tessellations: Concepts and Applications of Voronoi Diagrams.
Wiley, New York.
Sinclair D (2016).
“S-hull: a fast radial sweep-hull routine for Delaunay triangulation.”
1604.01428.
See Also
Examples
#nx is number of X points (target) and ny is number of Y points (nontarget)
nx<-20; ny<-5; #try also nx<-40; ny<-10 or nx<-1000; ny<-10;
set.seed(1)
Xp<-cbind(runif(nx,0,1),runif(nx,0,1))
Yp<-cbind(runif(ny,0,.25),runif(ny,0,.25))+cbind(c(0,0,0.5,1,1),c(0,1,.5,0,1))
#try also Yp<-cbind(runif(ny,0,1),runif(ny,0,1))
DT<-interp::tri.mesh(Yp[,1],Yp[,2],duplicate="remove")
Xlim<-range(Xp[,1],Yp[,1])
Ylim<-range(Xp[,2],Yp[,2])
xd<-Xlim[2]-Xlim[1]
yd<-Ylim[2]-Ylim[1]
Xch<-Xin.convex.hullY(Xp,Yp)
plot(Xp,main=" ", xlab=" ", ylab=" ",
xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05),pch=".",cex=3)
interp::convex.hull(DT,plot.it = TRUE, add = TRUE) # or try polygon(Yp[ch$i,])
points(Xch,pch=4,col="red")