首先,请看一下这张照片:
考虑方块表示笛卡尔点,星号表示(0,0)点。
在图片中,给定的点是(按三角函数顺序并在图像中用' - '标记):( 0,0); (0,1); (0,2); (-1,2); (-2,2); (-2,1); (-3,1); (-3,0); (-3,-1); (-2,-1); (-2,-2); (-1,-2); (0,-2); (1,-2); (1,-1); (1,0)。
给出(只是!)上面的点,我如何确定灰色方块的面积(张贴图片中的5个)? (“由已指定的点确定的多边形内的整数坐标的点数”)
我想在C ++中实现这样的东西。这就是我在StackOverflow上发布问题的原因。 但是,一旦有人向我解释了(几何方法或任何方法),我希望我能够自己实现它。
非常感谢任何帮助! 非常感谢你!
答案 0 :(得分:2)
您可以使用众所周知的algorithm for area of polygon,按顺序由顶点定义。
A = Abs(1/2*Sum(X(i)*Y(i+1)-X(i+1)*Y(i)))
然后使用Pick theorem查找轮廓内整数坐标的点数:
i=A-b/2+1
其中A是区域,b是边界点数。
这个例子
i=12-16/2+1=5
答案 1 :(得分:0)
灰色方块的面积是一个方格面积的5倍。
答案 2 :(得分:0)
尝试逐层计算面积。首先确定最底层的间隔,并检查灰色区域是否位于图层中。如果是这样,那么改变间隔,使其不包括灰色区域。例如(-3,-2)(-2,-2)( - 2,-3)( - 1,-3)(0,-3)(0,-2)(1,-2)那么间隔为(-3,-2)U(0,1)。我希望这能帮到您。抱歉英文不好