草庐IT

三边形

全部标签

c++ - 寻找非凸多边形的代表性平均内部点

我正在尝试用C++解决旅行商问题,但我必须遍历一组多边形之间的最短距离,而不是一组点。为此,我试图用一个具有代表性的“平均”内点来表示每个多边形,以便我可以对这些平均内点进行TSP。我很容易在凸多边形中找到一个平均内点,因为它只是算术平均点(对于凸多边形,它总是位于内部),但这种方法不适用于凹多边形,因为它不一定在多边形内部。帮忙解决这个问题?谢谢。:-) 最佳答案 怎么样:三角化多边形(N阶log(N))选择面积最大的三角形(比方说)(N阶)在那个三角形的重心处选择你的点。(常量)由于整个非凸多边形的真正重心(可能)在多边形之外,

c++ - 路径笔划算法(转换为三角形/四边形)或其他建议

有谁知道将vector路径转换为由三角形/四边形面组成的描边路径的好算法?理想情况下使用圆线连接。基本上,我试图绘制一条粗路径,其颜色基于随路径距离变化的值。我正在考虑将路径转换为三角形/四边形并通过提供沿路径的距离作为一维纹理坐标来对其进行纹理映射,然后可以使用该坐标来检索三角形角处的颜色并进行插值。任何其他关于如何执行此操作的建议都不会看起来很糟糕并且可以消除锯齿,我们将不胜感激。目前我正在使用AGG进行渲染,但我可能会使用替代方案,前提是它没有太多依赖项。我想用于渲染的后端并不重要。虽然AGG可以绘制路径,但VertexSource接口(interface)不允许除x/y坐标之外

c++ - 多边形内的检查点

intpnpoly(intnpol,float*xp,float*yp,floatx,floaty){inti,j,c=0;for(i=0,j=npol-1;i此函数检查点是否在多边形内。如何处理负的多边形坐标?例如,floatx[3]={0.16,1.2,-10};floaty[3]={1.8,10,-5.5};我尝试检查多边形内的有效点,但它返回0。 最佳答案 iSurfer中有相当不错的实现大多数情况下使用的两种方法(也是我所知道的两种)是交叉数和缠绕数。两者都不受多边形/点坐标符号的影响。所以它一定是你的代码中的错误。为了完

c++ - 多边形分割与三角剖分

我最近问了thisquestion关于如何将凹多边形切割成凸多边形,有人建议我进行三角剖分或多边形分割。我正在使用的库(SFML\Box2D)只采用凸形。这是我想知道的:IsPolygonPartitioning,orTriangulationofPolygonsfaster?HowdoesPolygonPartitioningwork/Howdoyoudoit?不要忘记三角测量也不需要制作凸形... 最佳答案 不是您问题的完整答案,但如果您有一个通用多边形(凹面、凸面等)并且您希望对其进行三角剖分(可能用于后续的openGL样式渲

c++ - openCV中2个多边形的交叉区域

我有2个多边形的轮廓(作为cv::Point2d的vector)。我想计算它们之间的交集面积获取它的最简单方法是什么?非常感谢!罗恩 最佳答案 用CV_FILLED在两幅图像中绘制形状,然后将它们相运算。区域是:CountNonZero(bitwise_and(ShapeAImage,ShapeBImage))。 关于c++-openCV中2个多边形的交叉区域,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

c++ - 如何生成随机顶点以在 C++ 中形成凸多边形?

我需要为一个简单的凸多边形生成一组顶点,以便使用动态规划对该多边形进行最小权重三角剖分,我想取一个半径为r的圆,然后取20个顶点逆时针移动,然后我将形成一个20顶点的凸多边形,但我该怎么做我如何知道位于半径为r的圆上的顶点?除此之外,还有另一种更简单的方法来生成凸多边形的顶点吗非常感谢任何帮助 最佳答案 生成0到2*pi之间的20个随机数,并对它们进行排序。现在使用一些基本的三角函数来转换为X、Y坐标。for(inti=0;i 关于c++-如何生成随机顶点以在C++中形成凸多边形?,我们

c++ - 将 boost::geometry 多边形转换为 STL 对象

如何将boost::geometry多边形放入STL对象中?我确信这一定很简单,因为我无法在文档中的任何地方找到示例。然而,我花了大约4个完整的工作日来尝试做这件小事。我是C++的新手(长期的R程序员),但这些小的数据转换事情让我发疯。是的,有一个问题的标题很像我的:GettingthecoordinatesofpointsfromaBoostGeometrypolygon但是代码太复杂了(发帖者一直在修改它很多次),我无法理解它的正反面,我也无法想象其他C++新手能够做到。这是一个应该转换为其他一些boost::geometry数据类型的简单示例,因此希望任何人都能理解它。#incl

java - 如何使用 opencv 或 javacv 识别多边形?

我正在做一个项目,该项目使用图像处理技术来识别不同的对象及其长度。我在javaCV和OpenCV中浏览了许多示例。但不幸的是,我无法识别多边形的T形。我尝试使用以下矩形识别方法但我失败了。publicstaticCvSeqfindSquares(finalIplImagesrc,CvMemStoragestorage){CvSeqsquares=newCvContour();squares=cvCreateSeq(0,sizeof(CvContour.class),sizeof(CvSeq.class),storage);IplImagepyr=null,timg=null,gray=

c++ - 如何在 Boost 中对多边形进行三角剖分?

使用Boost对多边形进行三角剖分的最佳方法是什么?我使用Boost.polygon.我目前的算法:根据我的多边形顶点计算voronoï图。为每个单元格边创建一个有向多边形边(这将为每个单元格边创建两个有向多边形边)遍历所有创建的边以创建三角形(不简单)有更好的解决方案吗?编辑:我刚刚意识到可以以一种特殊的方式遍历单元格以直接创建三角形(3个相邻单元格创建一个三角形)。 最佳答案 主要思想是遍历Voronoi顶点,并根据入射到Voronoi顶点的每个单元格的生成点创建一个三角形。在度数>3的退化顶点的情况下,您将需要生成多个三角形,

c++ - 栅格化二维多边形

我需要从表示为点列表的封闭二维多边形创建二进制位图。您能否为我指出高效且足够简单的算法来执行此操作,或者更好的是一些C++代码?非常感谢!PS:我想避免向我的项目添加依赖项。但是,如果你建议一个开源库,我可以随时查看代码,所以它也很有用。 最佳答案 您想要的神奇谷歌短语是“非零缠绕规则”或“偶奇数多边形填充”。请参阅维基百科条目:non-zerowindingruleevenoddpolygonfill两者都非常容易实现,并且对于大多数用途来说都足够快。巧妙地,它们也可以抗锯齿。 关于c