参照《计算机图形学》一书中的描述,多边形(polygon)是由三个及以上的顶面坐标位置描述的平面图形,这些顶点由多边形的边顺序连接。多边形的一个内角由两个相邻边形成的边界之内的角。如果所有内角均小于180度则称为凸(convex)多边形,否则为凹(concave)多边形。
百度多边形凹凸的判断,主要方法有:凸包法、叉乘法(大于和小于180度的符号相反)、辛普森面积法。这里主要学习下叉乘的运用,并配上 C++ Qt 示例代码。
判断方法:为每一条边建立一个向量,使用相邻边的叉积来测试凹凸性。凸多边形的所有相邻边向量叉积同号。如果出现一些正一些负则为凹多边形。
(网上找的图,可以 ABC 分别看作 xyz。食指指向 x ,手心朝向 y 轴,大拇指向上的方向恰好是 z 的方向)
示例:
void Widget::paintEvent(QPaintEvent *)
{
//顶点,第一个为凸,第二个为凹
/*QVector points = QVector()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?