angle3pnts: The angle between two line segments

View source: R/ArcSliceFunctions.R

angle3pntsR Documentation

The angle between two line segments

Description

Returns the angle in radians or degrees between two vectors or line segments at the point of intersection. The line segments are [ba] and [bc] when the arguments of the function are given as a,b,c. radian is a logical argument (default=TRUE) which yields the angle in radians if TRUE, and in degrees if FALSE. The smaller of the angle between the line segments is provided by the function.

Usage

angle3pnts(a, b, c, radian = TRUE)

Arguments

a, b, c

Three 2D points which represent the intersecting line segments [ba] and [bc]. The smaller angle between these line segments is to be computed.

radian

A logical argument (default=TRUE). If TRUE, the (smaller) angle between the line segments [ba] and [bc] is provided in radians, else it is provided in degrees.

Value

angle in radians or degrees between the line segments [ba] and [bc]

Author(s)

Elvan Ceyhan

See Also

angle.str2end

Examples

## Not run: 
A<-c(.3,.2); B<-c(.6,.3); C<-c(1,1)
pts<-rbind(A,B,C)

angle3pnts(A,B,C)

angle3pnts(A,B,A)
round(angle3pnts(A,B,A),7)

angle3pnts(A,B,C,radian=FALSE)

#plot of the line segments
Xlim<-range(pts[,1])
Ylim<-range(pts[,2])
xd<-Xlim[2]-Xlim[1]
yd<-Ylim[2]-Ylim[1]

ang1<-angle3pnts(A,B,C,radian=FALSE)
ang2<-angle3pnts(B+c(1,0),B,C,radian=FALSE)

sa<-angle.str2end(A,B,C,radian=FALSE)$s #small arc angles
ang1<-sa[1]
ang2<-sa[2]

plot(pts,asp=1,pch=1,xlab="x",ylab="y",
xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05))
L<-rbind(B,B); R<-rbind(A,C)
segments(L[,1], L[,2], R[,1], R[,2], lty=2)
plotrix::draw.arc(B[1],B[2],radius=xd*.1,deg1=ang1,deg2=ang2)
txt<-rbind(A,B,C)
text(txt+cbind(rep(xd*.05,nrow(txt)),rep(-xd*.02,nrow(txt))),c("A","B","C"))

text(rbind(B)+.15*xd*c(cos(pi*(ang2+ang1)/360),sin(pi*(ang2+ang1)/360)),
paste(round(abs(ang1-ang2),2)," degrees"))

## End(Not run)


pcds documentation built on July 9, 2023, 5:54 p.m.