我正在尝试学习如何使用R包中的一些函数来计算区域。 areapl()
是我在splancs
包中找到的第一个x <- c(1,0,0,1,1,1,1,3,3,1)
y <- c(0,0,1,1,0,0,-1,-1,0,0)
m <- cbind(x, y)
plot(m, type="b")
areapl(m)
areapl(m[1:5,])
areapl(m[6:10,])
。帮助文件末尾有一个示例:
areapl(m[1:5,])
显然areapl(m[6:10,])
和areapl(m)
的答案是我们所期望的,但是当我尝试这个areapl(m[1:5,])
时,它给出了1作为答案。我所期望的是areapl(m[6:10,])
和{{1}}的总和应该是3而不是两个区域的差异。
任何人都可以帮我理解这个功能是如何工作的吗?
非常感谢您的帮助。
答案 0 :(得分:3)
您必须保留所给点的顺序(顺时针或逆时针)。尝试:
x[6:10]<-x[10:6]
y[6:10]<-y[10:6]
m <- cbind(x, y)
areapl(m)
我没有安装splancs
并且没有对其进行测试。但是,我用其他多边形库测试了它,所以我很确定这就是问题所在。您顺时针提供了第一个多边形的点,逆时针提供了第二个多边形的点。试试你是否一致,你应该没事。