当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R inSide 点是否在边界内?


R语言 inSide 位于 mgcv 包(package)。

说明

评估点是否在边界内。边界必须包围域,但可以包括岛屿。

用法

inSide(bnd,x,y)

参数

bnd

这应该有两个长度相等的列,其名称与 xy 中提供的内容匹配。这可能包含由 NA 分隔的多个边界部分。或者,bnd 可以是一个列表,其中每个元素包含 2 列,如上所示。详情请参阅下文。

x

要测试的点的 x 坐标。

y

要测试的点的 y 坐标。

细节

边界段由 NA 分隔,或者位于单独的列表元素中。边界坐标用于定义由直线段连接的节点,以创建边界。假定每个线段定义一个闭环,并且假定线段中的最后一个点与第一个点连接。循环不得相交(未对此进行测试)。

使用的方法是计算一条线在 y 方向上从一个点穿过边界线段的次数。奇数个交叉定义了一个内部点。因此,在地理应用中,通常会有一个外部边界循环,可能会有一些内部‘islands’完全封闭在外部循环中。

该例程调用已编译的 C 代码,并通过对 x, y 中的每个点进行详尽的搜索来进行操作。

该函数返回与 xy 具有相同维度的逻辑数组。 TRUE 表示对应的x, y 点位于边界内部。

例子

require(mgcv)
m <- 300;n <- 150
xm <- seq(-1,4,length=m);yn<-seq(-1,1,length=n)
x <- rep(xm,n);y<-rep(yn,rep(m,n))
er <- matrix(fs.test(x,y),m,n)
bnd <- fs.boundary()
in.bnd <- inSide(bnd,x,y)
plot(x,y,col=as.numeric(in.bnd)+1,pch=".")
lines(bnd$x,bnd$y,col=3)
points(x,y,col=as.numeric(in.bnd)+1,pch=".")
## check boundary details ...
plot(x,y,col=as.numeric(in.bnd)+1,pch=".",ylim=c(-1,0),xlim=c(3,3.5))
lines(bnd$x,bnd$y,col=3)
points(x,y,col=as.numeric(in.bnd)+1,pch=".")

作者

Simon N. Wood simon.wood@r-project.org

参考

https://www.maths.ed.ac.uk/~swood34/

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Are points inside boundary?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。