View source: R/ArcSliceFunctions.R
Idom.num1ASbasic.tri | R Documentation |
Returns I(p
is a dominating point of the AS-PCD) where the vertices of the AS-PCD are the 2D data set Xp
, that is, returns 1 if p
is a dominating
point of AS-PCD, returns 0 otherwise. AS proximity regions are defined with respect to the standard basic triangle,
T_b
, c_1
is in [0,1/2]
, c_2>0
and (1-c_1)^2+c_2^2 \le 1
.
Any given triangle can be mapped to the standard basic triangle by a combination of rigid body motions (i.e., translation, rotation and reflection) and scaling, preserving uniformity of the points in the original triangle. Hence standard basic triangle is useful for simulation studies under the uniformity hypothesis.
Vertex regions are based on the center, M=(m_1,m_2)
in Cartesian coordinates
or M=(\alpha,\beta,\gamma)
in barycentric coordinates
in the interior of the standard basic triangle T_b
or based on circumcenter of T_b
;
default is M="CC"
, i.e., circumcenter of T_b
.
Point, p
, is in the vertex region of vertex rv
(default is NULL
); vertices are labeled as 1,2,3
in the order they are stacked row-wise.
ch.data.pnt
is for checking whether point p
is a data point in Xp
or not (default is FALSE
),
so by default this function checks whether the point p
would be a dominating point
if it actually were in the data set.
See also (\insertCiteceyhan:Phd-thesis,ceyhan:comp-geo-2010,ceyhan:mcap2012;textualpcds).
Idom.num1ASbasic.tri(p, Xp, c1, c2, M = "CC", rv = NULL, ch.data.pnt = FALSE)
p |
A 2D point that is to be tested for being a dominating point or not of the AS-PCD. |
Xp |
A set of 2D points which constitutes the vertices of the AS-PCD. |
c1 , c2 |
Positive real numbers which constitute the vertex of the standard basic triangle
adjacent to the shorter edges; |
M |
The center of the triangle. |
rv |
Index of the vertex whose region contains point |
ch.data.pnt |
A logical argument for checking whether point |
I(p
is a dominating point of the AS-PCD) where the vertices of the AS-PCD are the 2D data set Xp
,
that is, returns 1 if p
is a dominating point, returns 0 otherwise
Elvan Ceyhan
Idom.num1AStri
and Idom.num1PEbasic.tri
c1<-.4; c2<-.6;
A<-c(0,0); B<-c(1,0); C<-c(c1,c2);
Tb<-rbind(A,B,C)
n<-10
set.seed(1)
Xp<-runif.basic.tri(n,c1,c2)$g
M<-as.numeric(runif.basic.tri(1,c1,c2)$g) #try also M<-c(.6,.2)
Idom.num1ASbasic.tri(Xp[1,],Xp,c1,c2,M)
gam.vec<-vector()
for (i in 1:n)
{gam.vec<-c(gam.vec,Idom.num1ASbasic.tri(Xp[i,],Xp,c1,c2,M))}
ind.gam1<-which(gam.vec==1)
ind.gam1
#or try
Rv<-rel.vert.basic.triCC(Xp[1,],c1,c2)$rv
Idom.num1ASbasic.tri(Xp[1,],Xp,c1,c2,M,Rv)
Idom.num1ASbasic.tri(c(.2,.4),Xp,c1,c2,M)
Idom.num1ASbasic.tri(c(.2,.4),c(.2,.4),c1,c2,M)
Xp2<-rbind(Xp,c(.2,.4))
Idom.num1ASbasic.tri(Xp[1,],Xp2,c1,c2,M)
CC<-circumcenter.basic.tri(c1,c2) #the circumcenter
if (dimension(M)==3) {M<-bary2cart(M,Tb)}
#need to run this when M is given in barycentric coordinates
if (isTRUE(all.equal(M,CC)) || identical(M,"CC"))
{cent<-CC
D1<-(B+C)/2; D2<-(A+C)/2; D3<-(A+B)/2;
Ds<-rbind(D1,D2,D3)
cent.name<-"CC"
} else
{cent<-M
cent.name<-"M"
Ds<-prj.cent2edges.basic.tri(c1,c2,M)
}
Xlim<-range(Tb[,1],Xp[,1])
Ylim<-range(Tb[,2],Xp[,2])
xd<-Xlim[2]-Xlim[1]
yd<-Ylim[2]-Ylim[1]
plot(A,pch=".",xlab="",ylab="",
xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05))
polygon(Tb)
L<-rbind(cent,cent,cent); R<-Ds
segments(L[,1], L[,2], R[,1], R[,2], lty=2)
points(Xp)
points(rbind(Xp[ind.gam1,]),pch=4,col=2)
txt<-rbind(Tb,cent,Ds)
xc<-txt[,1]+c(-.03,.03,.02,.06,.06,-0.05,.01)
yc<-txt[,2]+c(.02,.02,.03,.0,.03,.03,-.03)
txt.str<-c("A","B","C",cent.name,"D1","D2","D3")
text(xc,yc,txt.str)
Idom.num1ASbasic.tri(c(.4,.2),Xp,c1,c2,M)
Idom.num1ASbasic.tri(c(.5,.11),Xp,c1,c2,M)
Idom.num1ASbasic.tri(c(.5,.11),Xp,c1,c2,M,ch.data.pnt=FALSE)
#gives an error message if ch.data.pnt=TRUE since the point is not in the standard basic triangle
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.