将多边形点按照逆时针排序
来源:互联网 发布:js treeview drag区域 编辑:程序博客网 时间:2024/06/05 00:44
Point center;bool PointCmp(const Point &a,const Point &b){ if (a.x >= 0 && b.x < 0) return true; if (a.x == 0 && b.x == 0) return a.y > b.y; //向量OA和向量OB的叉积 int det = (a.x - center.x) * (b.y - center.y) - (b.x - center.x) * (a.y - center.y); if (det < 0) return true; if (det > 0) return false; //向量OA和向量OB共线,以距离判断大小 int d1 = (a.x - center.x) * (a.x - center.x) + (a.y - center.y) * (a.y - center.y); int d2 = (b.x - center.x) * (b.x - center.y) + (b.y - center.y) * (b.y - center.y); return d1 > d2;}bool Cmp(const Point &a,const Point &b){ return !PointCmp(a,b);}
Point Gravity(Point *p, int n) { //返回多边形的重心 double area = 0; Point center; center.x = 0; center.y = 0; for (int i = 0; i < n-1; i++) { area += (p[i].x*p[i+1].y - p[i+1].x*p[i].y)/2; center.x += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].x + p[i+1].x); center.y += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].y + p[i+1].y); } area += (p[n-1].x*p[0].y - p[0].x*p[n-1].y)/2; center.x += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].x + p[0].x); center.y += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].y + p[0].y); center.x /= 6*area; center.y /= 6*area; return center;}void ClockwiseSortPoints(Point* vPoints, int n){ //计算重心 center=Gravity(vPoints,n); sort(vPoints,vPoints+n,Cmp);}
0 0
- 将多边形点按照逆时针排序
- Qt中按照逆时针给一组坐标排序
- 计算几何_多边形的有向面积和确保多边形的点是逆时针排列
- 怎样对平面中的点进行顺时针或者逆时针排序
- 给定一个多边形的形状点列如何判断顺时针还是逆时针
- 将数据按照奇偶排序
- OpenGL多边形顺逆时针问题
- 凸多边形定点逆时针排序
- 如何将HashMap,按照value值排序
- 如何将HashMap,按照value值排序
- 将字符串数组按照字典顺序排序
- php将字符串按照首字母顺序排序
- 空间多边形顺逆时针的判断
- UVALive 4617 Simple Polygon(顺/逆时针输出所有点/极角排序)
- js,将一个整数数组先按照因子数量排序,再按照数字大小排序
- js,将一个整数数组先按照因子数量排序,再按照数字大小排序 Version2
- 将记录按照某一规律的次序排序
- (java基础知识)如何将HashMap,按照value值排序
- 三种工厂模式的C++实现
- STM32f103焊接系列的温度
- symfony权威指南(4、1)之动作
- 一个粗糙的首页……
- 用顺序栈解决将读入的数按相反的方向解决
- 将多边形点按照逆时针排序
- iOS 面试要点二
- poj 1944 模拟(一圈牛要交谈)
- Longest Substring Without Repeating Characters - leetcode003
- 循环小数化分数(hdu-1717)
- leetcode之Maximum Product Subarray
- View的setOnClickListener的添加方法
- Android 最火的快速开发框架AndroidAnnotations使用详解
- 解决PHP move_uploaded_file函数移动图片失败