Java计算任意多边形面积

任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出。

   矢量面积=三角形两边矢量的叉乘。

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ad4b0cbc427a44b093e046f06d222c1d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAT2xpdmVyMjE=,size_13,color_FFFFFF,t_70,g_se,x_16#pic_center)
 按定理,多边形面积由P点与A-G的各顶点连接所构成的三角形矢量面积构成,假定多边形顶点坐标顺序为A-G,逆时针为正方向,则有如下结论:

PAB,PBC,PCD均为顺时针,面积为负;

PDE,PEF,PFG,PGA均未逆时针,面积为正;

但无论正负,均可通过P点与顶点连线的矢量叉乘完成,叉乘结果中已包含面积的正负。

point.class模拟坐标点

class Point{
    private int x;
    private int y;
}

方法

  public void getArea(List<Point> objects){
        int i, j;
        int area = 0;
        for (i = 0; i < objects.size(); i++)
        {
            j = (i + 1) % objects.size();
            area += objects.get(i).getX() * objects.get(j).getY();
            area -= objects.get(i).getY() * objects.get(j).getX();
        }
        area /= 2;
        System.out.println(Math.abs(area));
    }

测试

   @Test
    public void test() {
        Point x = new Point();
        x.setX(100);
        x.setY(100);
        Point x1 = new Point();
        x1.setX(100);
        x1.setY(300);
        Point x2 = new Point();
        x2.setX(200);
        x2.setY(300);
        Point x3 = new Point();
        x3.setX(200);
        x3.setY(100);
        List<Point> objects = new ArrayList<>();
        objects.add(x);
        objects.add(x1);
        objects.add(x2);
        objects.add(x3);

        getArea(objects);
    }

结果
在这里插入图片描述
参考连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值