已知多边形的顶点坐标(x,y),求多边形的面积
来源:互联网 发布:淘宝已买的宝贝在哪找 编辑:程序博客网 时间:2024/05/18 02:47
package 计算多边形的面积;public class 计算多边形的面积 { public static void main(String[] args) { System.out.println(calcuArea(new double[]{0, 0, 1, 1}, new double[]{0, 1, 1, 0})); } public static double calcuArea(double[] xs, double[] ys) { int n = xs.length; double area = 0; for(int i = 0; i < n; i++) { area += xs[i % n] * ys[(i + 1) % n] - xs[(i + 1) % n] * ys[i % n]; } return 0.5 * Math.abs(area); }}
上述代码为已知一个多边形的各个顶点的坐标(x,y),求取多边形面积的java代码。
基本的原理很简单,我们用简单的三角形的情况来理解,如下图
已经知道的多边形的三点为ABC,在平面上任取一点O(一般将O取为坐标原点)。如果利用向量的叉乘运算(|xx|代表向量的长度)
OA 叉乘 OB = |OA|×|OB|×Sin∠AOB
刚好是三角形OAB面积的两倍,但是这里需要注意计算出来的值可能是负值,因为叉乘的顺序OA叉乘OB 与 OB叉乘OA的结果是不一样的,互为相反数,因为旋转的方向不一样,不清楚的可以去查阅数学书,在这里刚好需要利用到这个特性。
计算:
OA 叉乘 OB + OB 叉乘 OC + OC叉乘OA
值刚好是三角形ABC面积的两倍(先忽略掉符号问题),为什么呢,因为这样叉乘绕一圈以后,刚好可以将三角形OAB中多出的OBC 和 OAC部分去除,为什么呢,因为叉乘旋转的方向不一样,导致 OA 叉乘 OB 与OB 叉乘 OC 和 OC叉乘OA的符号一定不一样, 加起来刚好就去除了。
所以最后,将 OA 叉乘 OB + OB 叉乘 OC + OC叉乘OA 取绝对值再除以2,就是我们要求的面积了。
用上述的思想,可以很容易的推广到任意的多边形上。
阅读全文
0 0
- 已知多边形的顶点坐标(x,y),求多边形的面积
- 已知多边形各顶点的坐标,求多边形面积
- 已知多边形顶点坐标求面积
- 已知任意一个多边形的各个顶点的坐标,怎么去求该多边形的面积?
- C++:已知各顶点坐标求多边形面积
- 求多边形面积公式(已知顶点坐标)
- 求多边形面积(已知坐标)
- 已知坐标求多边形面积
- 已知多边形各顶点坐标如何计算多边形面积
- 根据各顶点坐标求多边形面积
- hdoj 2036 已知坐标求多边形面积
- 根据闭合的多边形坐标求面积
- 经纬度坐标下求多边形的面积
- 已知点坐标,简单多边形面积的计算
- 【多边形面积】求多边形的面积 pol
- 求多边形的面积
- 求含n个顶点的多边形面积
- 多边形面积的坐标求法
- 策划菜单
- Ue4之快捷键
- 大小写英文字母转换
- M层Rxjava2解析数据
- 7.3用函数计算两个数的最大值
- 已知多边形的顶点坐标(x,y),求多边形的面积
- 从别人那里拷过来的OS X直接在vmware打开后一直卡在进入界面/如何直接运行拷过来的OS X
- 杭电ACM2026:首字母大写
- NOIp2017酱油记
- 亿级流量网站架构核心技术 -- 读书笔记
- html两个div浮动后下一个div怎么换行的问题
- 垃圾CSDN 吞我博客 还封我号 我必须用小号骂你
- 多线程下载加安装程序加RxJava加Fresco
- 数据结构实验之二叉树二:遍历二叉树