【问题标题】:What's the point in QPainter::drawConvexPolgonQPainter::drawConvexPolgon 有什么意义
【发布时间】:2013-02-22 17:59:59
【问题描述】:
来自文档:
QPainter提供两种绘画QPolygons的方法:drawPolygon和drawConvexPolygon。
文档中没有明确说明它们之间的区别。此外,drawConvexPolygon 文档状态
如果提供的多边形不是凸多边形,即它包含至少一个大于 180 度的角,则结果未定义。
那么……它是干什么用的?我希望该方法能以某种方式找到我的多边形的凸包并绘制它,但似乎并非如此。
【问题讨论】:
标签:
qt
qpainter
convex-hull
【解决方案1】:
QPainter::drawConvexPolygon() documentation 说:
在某些平台(例如 X11)上,drawConvexPolygon() 函数可能比 drawPolygon() 函数更快。
所以,
-
drawPolygon() 更通用,因为它还允许绘制非凸多边形(但绘制速度可能会更慢)
-
drawConvexPolygon() 只能用于绘制凸多边形,但在特定平台上可能更快
例如,在进行 3D 渲染时,您可以使用由凸多边形组成的 Polygon Mesh 以简化渲染,在这种情况下,更快的 drawConvexPolygon() 将是更好的选择(因为您需要绘制大量的凸多边形)。
【解决方案2】:
确定多边形的哪一部分是外侧和内侧(用于填充目的)会根据多边形是否包含凸区域做出不同的选择。想想如何确定星形的内部与矩形的内部。