【发布时间】:2014-02-16 03:23:36
【问题描述】:
我正在尝试计算空间中任意点生成的面积(橙色)。以下是一些不同可能场景的示例图片:
所以基本上在所有三张图片中,我希望能够通过绘制从点到蓝色区域的水平和垂直线来计算从点生成的橙色区域。这个想法很简单,但实际上实施起来非常具有挑战性。我正在用 R 编写这段代码,所以对 R 代码的任何帮助都会很棒。此外,对于第三个示例,我们可以假设橙色区域的边界为 x 和 y 等于 8。而且,我们还知道绿色点的坐标。任何建议都非常感谢!
哦,这是我生成以下图的代码:
x = c(1,3,5)
y = c(5,3,1)
point1 = c(2,4)
point2 = c(2,2)
point3 = c(0,0)
plot(x,y,type="n",xlim=c(0,8),ylim=c(0,8))
rect(point1[1],point1[2],max(x)+10,max(y)+10,col="orange",border=NA)
rect(x,y,max(x)+10,max(y)+10,col="lightblue",border=NA)
points(x,y,pch=21,bg="green")
points(point1[1],point1[2],pch=21,bg="blue")
box()
plot(x,y,type="n",xlim=c(0,8),ylim=c(0,8))
rect(point2[1],point2[2],max(x)+10,max(y)+10,col="orange",border=NA)
rect(x,y,max(x)+10,max(y)+10,col="lightblue",border=NA)
points(x,y,pch=21,bg="green")
points(point2[1],point2[2],pch=21,bg="blue")
box()
plot(x,y,type="n",xlim=c(0,8),ylim=c(0,8))
rect(point3[1],point3[2],max(x)+10,max(y)+10,col="orange",border=NA)
rect(x,y,max(x)+10,max(y)+10,col="lightblue",border=NA)
points(x,y,pch=21,bg="green")
points(point3[1],point3[2],pch=21,bg="blue")
box()
【问题讨论】:
-
点是否保证在整数位置?
-
不,他们不是。我只是这样做是为了便于演示。虽然如果你有一个适用于整数的想法,我会非常有兴趣听到它。
-
如果点是整数值,您可以存储 1x1 矩形的二维网格。对于每个蓝色矩形,您可以将网格中相应的 1x1 矩形标记为蓝色。然后你可以在最后总结所有非蓝色(又名橙色)的矩形。