还记得我们是怎么计算多边形面积的么?

让你先思考10秒钟,Any good idea?

好吧相信你心中已经有了想法。

还记得我们学过的叉乘么,两个向量同一起点的叉乘积再乘1/2就是三角形的面积(哦哦哦,我知道,把多边形分成三角形就可以了)

然后很自然的我们就能联想到多边形的面积,就是把多边形分成N-2个三角形就能算多边形的面积了

那凹多边形的面积呢?

我们计算时先去一个定点,然后依次连接多边形的定点,计算每个三角形的面积,如下

代码如下

struct Point {

double x, y;

};

//计算任意多边形的面积,顶点按照顺时针或者逆时针方向排列

double polygon_area(Point *p, int n)

{

if(n < 3) return 0;

double sum = 0;

p[n + 1] = p[1];

for(int i = 1; i <= n; i++)

sum += p[i].x * p[i + 1].y - p[i].y * p[i + 1].x;

sum = fabs(sum / 2.0);

return sum;

}

好了,这节我就理解完了,我是否讲清楚了呢?

下面练习一道题把 HDU - 2036

“ 改革春风吹满地,

不会AC没关系;

实在不行回老家,

还有一亩三分地。

谢谢!(乐队奏乐)”

话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。

好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。

这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。

发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧...

Input

输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。

输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。

Output

对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。

每个实例的输出占一行。

Sample Input

3 0 0 1 0 0 1

4 1 0 0 1 -1 0 0 -1

0

Sample Output

0.5

2.0

这道题选的定点是原点,

代码如下

#include#include using namespace std;

int n;

struct Point{

double x,y;

}p[105];

double polygon_area(Point *p,int n){

if(n<3)

return 0;

double sum=0;

p[n+1]=p[1];

for(int i=1;i<=n;i++)

sum+=p[i].x*p[i+1].y-p[i].y*p[i+1].x;

sum=fabs(sum)/2.0;

printf("%.1lf\n",sum);

}

int main(){

while(scanf("%d",&n)&&n){

for(int i=1;i<=n;i++)

scanf("%lf%lf",&p[i].x,&p[i].y);

polygon_area(p,n);

}

return 0;

}

使用计算机计算一个多边形,计算机几何基础,计算多边形的面积, HDU-2036相关推荐

  1. matlab计算一个递推公式,用递推公式计算定积分(matlab版)

    <用递推公式计算定积分(matlab版)>由会员分享,可在线阅读,更多相关<用递推公式计算定积分(matlab版)(7页珍藏版)>请在人人文库网上搜索. 1.用递推公式计算定积 ...

  2. 吐槽今年一级计算机,吐槽大会#辽宁省考#当一个没有情感的计算机器

    成功上岸 #辽宁省考#[2019年辽宁省公务员招录考试正式拉开序幕]今天上午九点,辽宁省公务员考试正式拉开了序幕.这次考试全省共计招考5535个岗位,招考人数7209人,报名人数突破15万人,是辽宁省 ...

  3. “飞天”就是一个操作系统,最重要的功能就是资源管理;这套系统简单说就是把所有资源抽象成一台计算机,并通过互联网提供计算服务。...

    "飞天"就是一个操作系统,最重要的功能就是资源管理:这套系统简单说就是把所有资源抽象成一台计算机,并通过互联网提供计算服务. 转载于:https://www.cnblogs.com ...

  4. 字长为16位的计算机_字长为16位表示这台计算机最大能计算一个16位的十进制数...

    字长为16位表示这台计算机最大能计算一个16位的十进制数 答:× 以下为绿松石的鉴定特征是: 答:内凹的"铁线" 绿蓝色 天蓝色 白色细纹 通常酒店为保证类客人保留客房至 答:入住 ...

  5. 计算机编程题目身高计算,VB1设计一个由输入身高计算标准体重的程序。计算公式为:男:标准体重(kg)=身高(cm)-100;- 一起装修网...

    VB1设计一个由输入身高计算标准体重的程序.计算公式为:男:标准体重kg=身高cm-100: 我来回答>> 百度用户(缘梦ym666) 浏览37次 2021-07-13 16:08 女:标 ...

  6. 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc

    <课程总结报告-普适计算及其应用> 课程总结报告 Course Paper 报告编号 Paper No:1306010512 撰写日期 Date: 2013-12-3 计算机新技术课程总结 ...

  7. 【计算摄影】计算机如何学会自动裁剪图片(自动构图)?

    大家好,这是专栏<计算摄影>的第三篇文章,这一个专栏来自于计算机科学与摄影艺术的交叉学科.今天我们讨论的问题是图像的自动裁剪/自动构图问题. 作者&编辑 | 言有三 1 自动构图基 ...

  8. 计算机科学计算方面分为,计算机方面的专业分为哪些类?【资讯与计算科学】和【电脑科学与技术专业】有什么不同?...

    计算机方面的专业分为哪些类?[资讯与计算科学]和[电脑科学与技术专业]有什么不同?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看 ...

  9. 线性代数应用于计算机科学例子,为什么计算机科学家们应该了解量子计算?(三):算法棱镜折射出的科学...

    译者按: 本文译自 Aram Harrow 的 Why now is the right time to study quantum computing(原文链接), 经 Aram 授权翻译. Ara ...

最新文章

  1. Linux命令(基础)
  2. 每天一个linux命令(14):head 命令
  3. 幸运从来都只偏爱有准备的人——大龄码农的慌张日记
  4. Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持
  5. 韩寒近期【雷人】语录
  6. redis实现轮询算法_Dcron:基于redis与一致性哈希算法的分布式定时任务库
  7. react中的render-props模式
  8. 关于魔方里的工具修改方法
  9. Python 进阶 —— 使用修饰器执行函数的参数检查
  10. how to send blogs to wordpress through the windows live writer
  11. 文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶
  12. Oracle 周的第一天
  13. HAU寒假训练第二周
  14. 道高一尺 魔高一丈 内存泄漏智能指针
  15. 基于PHP+MYSQL的成绩查询系统(含源码)
  16. css让四个div并排显示,css如何让两个div并排显示?
  17. Android一点 play商店地区与语言设置
  18. 在线ARM仿真器知识(嵌入式系统设计师必备)
  19. 一个WPF和SL的严重BUG,能导致任何的寄主程序崩溃
  20. USACO2013 island travels

热门文章

  1. sql server 获取本机的ip地址
  2. X书Scheme跳转到指定页面
  3. FLASH知识及读写擦除规则
  4. nvivo是什么,为什么要学习nvivo,如何学?
  5. 接收微信公众号的事件推送并且回复消息
  6. 苹果手机小圆圈怎么设置_敬业签苹果手机版软件小账本怎么设置密码?
  7. 芯盾时代: 开启“智慧身份认证”新时代
  8. 程序员群嘲红芯浏览器:注释过度很业余 创新混淆视听
  9. 完全卸载docker 有效
  10. Fundamental of 4G LTE - 学习笔记(3)OFDMA/OFDM in 4G LTE (Part1)