當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。