多边形凹凸性的判断、自相交判断

您所在的位置:网站首页 线段交叉是什么样 多边形凹凸性的判断、自相交判断

多边形凹凸性的判断、自相交判断

2024-06-23 09:58| 来源: 网络整理| 查看: 265

文章目录 说明分析代码关于自相交的理解看图说话

说明

该博文参考 弱花3kou 的文章 [OpenGL] 绘制并且判断凹凸多边形、自相交多边形

分析 凸多边形

在这里插入图片描述

凹多边形

在这里插入图片描述

自相交

在这里插入图片描述

代码 #include #include #include #include using namespace std; // 定义点 struct Pos { int x; int y; }; // 定义边 struct Edge { int x1, x2; int y1, y2; int vx; int vy; int a, b, c; }; // 定义多边形 struct Poly { // 点集 int xx[100]; int yy[100]; // 边集 Edge Edges[100]; int plotNums = 0; //点数量 int edgeNums = 0; //边数量 // 记录凹点 int conv = 0; }; Poly poly; // 求交点坐标,这里的A、B、C是直线方程 Ax + By + C = 0 的参数,求交点是利用向量叉乘计算得到的 // 具体可查看博客:用叉积求二维直线交点 // https://www.jianshu.com/p/3468c9967fc7 Pos CrossPos(int p1, int p2) { Pos res; int A1 = poly.Edges[p1].a; int B1 = poly.Edges[p1].b; int A2 = poly.Edges[p2].a; int B2 = poly.Edges[p2].b; int C1 = poly.Edges[p1].c; int C2 = poly.Edges[p2].c; int m = A1 * B2 - A2 * B1; if (m == 0) cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3