博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有向面积
阅读量:4911 次
发布时间:2019-06-11

本文共 928 字,大约阅读时间需要 3 分钟。

首先先讨论一下,对于一个三角形如何求面积:

 

很明显,S = |b| * |c| * |sinA| / 2 = | b × c | / 2;

学过叉积的都懂,由三角形的两个边向量就可以求出面积, 那么对于一个多边形呢(不规则的那种):

可以分解为S△ABC+S△ACD+S△ADE+S△AEF;

这个假如分解出来的话,单纯的看面积会重复算S△ABC,所以引入有向面积的概念;

简单点说,回到三角形的问题上,三角形的面积能够用叉积来表示,但是这个叉积是取模的,现在顺时针读取多边形的顶点来构造三角形,将他们的叉积相加,就能得到这个多变性的总面积了。

比如上图,S△ABC + S△ACD + S△ADE中,△ABC的叉积是和另外两个相反的,正好可以抵消掉,最后结果取模就是多边形的面积。

 

 

例如HDU2036

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;struct P{ int x; int y;};P p[105];double area(int a){ int b = a-1; return (p[b].x*p[a].y-p[a].x*p[b].y)-(p[0].x*p[a].y-p[a].x*p[0].y)+(p[0].x*p[b].y-p[b].x*p[0].y);}int main(){ int n; while(cin >> n){ if(n==0) break; for(int i=0;i
> p[i].x >> p[i].y; double sum = 0; for(int i=2;i

 

转载于:https://www.cnblogs.com/TheStuckedCat/p/9398085.html

你可能感兴趣的文章
第四篇 代码练习
查看>>
【转】VS2010和Matlab混编尝试
查看>>
HashMap、TreeMap和HashTable的区别
查看>>
解决 kubenetes无法创建pod No API token found for service account "default"
查看>>
Spring事务之@Transactional
查看>>
交替最小二乘ALS
查看>>
xgboost 算法总结
查看>>
C#的Struct
查看>>
iOS面试宝典
查看>>
多态、抽象类、接口、区别(java基础知识九)
查看>>
.NET笔试题集(二)
查看>>
团队项目 之 测试与调试
查看>>
原码, 反码, 补码 详解
查看>>
HTTP Header 详解
查看>>
find命令和exec xargs 命令
查看>>
Windows下常用的命令行操作
查看>>
[Swift]LeetCode833. 字符串中的查找与替换 | Find And Replace in String
查看>>
你还要我怎样~~要怎样~~~
查看>>
9.10校内训练
查看>>
设计模式--享元模式C++实现
查看>>