rel.vert.triCM | R Documentation |
CM
-vertex region in a triangle that contains a given pointReturns the index of the vertex
whose region contains point p
in
the triangle tri
=(y_1,y_2,y_3)
with vertex regions are constructed with center of mass CM=(y_1+y_2+y_3)/3
(see the plots in the example for illustrations).
The vertices of triangle, tri
,
are labeled as 1,2,3
according to the row number the vertex is recorded in tri
.
If the point, p
, is not inside tri
,
then the function yields NA
as output.
The corresponding vertex region is the polygon with the vertex, CM
,
and midpoints of the edges adjacent to the vertex.
See (\insertCiteceyhan:Phd-thesis,ceyhan:comp-geo-2010,ceyhan:mcap2012;textualpcds)
rel.vert.triCM(p, tri)
p |
A 2D point for which |
tri |
A |
A list
with two elements
rv |
Index of the |
tri |
The vertices of the triangle,
where row number corresponds to the vertex index in |
Elvan Ceyhan
rel.vert.tri
, rel.vert.triCC
, rel.vert.basic.triCM
,
rel.vert.basic.triCC
, rel.vert.basic.tri
, and rel.vert.std.triCM
A<-c(1,1); B<-c(2,0); C<-c(1.6,2);
Tr<-rbind(A,B,C);
P<-c(1.4,1.2)
rel.vert.triCM(P,Tr)
n<-20 #try also n<-40
Xp<-runif.tri(n,Tr)$g
Rv<-vector()
for (i in 1:n)
Rv<-c(Rv,rel.vert.triCM(Xp[i,],Tr)$rv)
Rv
CM<-(A+B+C)/3
D1<-(B+C)/2; D2<-(A+C)/2; D3<-(A+B)/2;
Ds<-rbind(D1,D2,D3)
Xlim<-range(Tr[,1],Xp[,1])
Ylim<-range(Tr[,2],Xp[,2])
xd<-Xlim[2]-Xlim[1]
yd<-Ylim[2]-Ylim[1]
plot(Tr,xlab="",ylab="",axes=TRUE,pch=".",xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05))
polygon(Tr)
points(Xp,pch=".")
L<-Ds; R<-matrix(rep(CM,3),ncol=2,byrow=TRUE)
segments(L[,1], L[,2], R[,1], R[,2], lty = 2)
text(Xp,labels=factor(Rv))
txt<-rbind(Tr,CM,D1,D2,D3)
xc<-txt[,1]+c(-.02,.02,.02,-.02,.02,-.01,-.01)
yc<-txt[,2]+c(-.02,-.04,.06,-.02,.02,.06,-.06)
txt.str<-c("rv=1","rv=2","rv=3","CM","D1","D2","D3")
text(xc,yc,txt.str)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.