找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 884|回复: 6

[每日一码] 求任意多边形的面积

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2018-2-4 22:27:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[C++] 纯文本查看 复制代码
//求任意多边形的面积
/*语法:result = polygonarea(vector<Point>&polygon, int N);
参数:
polygon:多变形顶点数组
N:多边形顶点数目
返回值:多边形面积
注意:
支持任意多边形,凹、凸皆可
多边形顶点输入时按顺时针顺序排列

*/
#include <iostream>
#include <vector>
using namespace std;
typedef struct  Point{
    double x, y;
    Point(){}
} Point;
double polygonarea(vector<Point>&polygon, int N)
{
    int i, j;
    double area = 0;
    for (i = 0; i<N; i++) {
        j = (i + 1) % N;
        area += polygon[i].x * polygon[j].y;
        area -= polygon[i].y * polygon[j].x;
    }
    area /= 2;
    return(area < 0 ? -area : area);
}

//测试函数
int main(){

    vector<Point> polygon;
    int n;
    cin >> n;
    polygon.resize(n);
    int i = 0;
    while (n--){
        double x, y;
        cin >> x >> y;
        polygon[i].x = x;
        polygon[i].y = y;
        ++i;
    }
    cout << "此多边形的面积为" << polygonarea(polygon, polygon.size()) << endl;


    return 0;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 112个

财富等级: 日进斗金

发表于 2018-2-14 19:25:22 来自手机 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-5-20 21:51:17 来自手机 | 显示全部楼层
polygon[j].y我知道是取第j个顶点y值,polygon.x是什么呢。

点评

哪地方有polyogn.x?  详情 回复 发表于 2018-5-20 22:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

 楼主| 发表于 2018-5-20 22:18:02 | 显示全部楼层
1121443108qaz 发表于 2018-5-20 21:51
polygon[j].y我知道是取第j个顶点y值,polygon.x是什么呢。

哪地方有polyogn.x?

点评

手机版看帖转接有问题,换电脑版看原来是polygon.x  详情 回复 发表于 2018-5-22 01:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-5-22 01:07:25 | 显示全部楼层
LoveArx 发表于 2018-5-20 22:18
哪地方有polyogn.x?

手机版看帖转接有问题,换电脑版看原来是polygon.x
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 35个

财富等级: 招财进宝

发表于 2018-5-29 10:52:45 | 显示全部楼层
哼哼~~多线分享哈
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-7-3 09:56:36 | 显示全部楼层
找了好久,,什么时候我也能写自己想要的代码啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-7-3 23:37:37 来自手机 | 显示全部楼层
版主,怎样才能做出半透明的polygon啊?就像area命令一样,或者选择命令的"WP"模式
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 06:35 , Processed in 0.351299 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表