| 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")