想象一个普通的矩形位图,比方说,1024x768像素填充白色。位图上绘制了一些(非重叠的)Sprite:圆形、正方形和三角形。是否有一种算法(甚至可能是C++实现)在给定位图和背景颜色(白色,在上例中)的情况下,生成一个列表,其中包含每个Sprite的最小边界矩形?这是一些示例:在左侧,您可以看到我的代码给出的示例位图(以及“背景”为白色的信息)。在右侧,您可以看到相同的图像以及四个形状的边界矩形(红色);我正在寻找的算法计算这些矩形的几何形状。一些绘画程序具有选择形状的类似功能:它们甚至可以计算看似任意的边界多边形。无需手动拖动选择矩形,您可以单击“背景”(什么是背景,什么不是由某个
Iamhavinghugesetof2Dlinesegments.So,Iknow;Linenumber,Begin(X,Y,Z)andEnd(x,Y,Z)ofeachlinesegment.Iwanttogetproximitylinesegmentsforagivenlinesegment.Likewiseforall.TofindtheproximityIcanapplythis如果我说我的数据是这样;因此,最后我想将邻近线作为每个线段的vector。我听说这种类型的vector的vector可以用r-tree数据结构来处理。我正在搜索它,但仍然找不到适合我的相关内容。我还查看了
我有一个简单的DLL,使用BoostGeometry多边形进行一些计算。(主要是交叉点和差异点。)由于DLL最有可能从C#代码和Delphi以及谁知道从其他地方调用,我应该将结果转换为任何东西都可以处理的数组。更新:我已经简化并稍微纠正了我的代码。新代码看起来完全不同,使用了完全不同的方法(for_each_point),并且不知何故仍然无法编译。我的新代码:#include#include#include#includeusingnamespaceboost::geometry;typedefboost::geometry::model::point>spherical_point;
我有一些凸多边形存储为点的STLvector(或多或少)。我要tessellate它们非常快,最好分成大小均匀的碎片,并且没有“条子”。我要用它把一些物体炸成小块。有谁知道一个很好的库来镶嵌多边形(将它们分成较小的凸多边形或三角形的网格)?我看过一些我已经在网上找到的,但我什至无法编译它们。这些学术类型不太重视易用性。 最佳答案 CGAL有解决这个问题的包。最好的可能是使用2DPolygonPartitioning包裹。例如,您可以生成多边形的y单调分区(也适用于非凸多边形),您会得到如下内容:运行时间为O(nlogn)。就易用性而
我正在编写一段代码,需要确定一个点是否在特定几何体内部。几何可以是2维的n边多边形(不一定是凸面)或3维的STL几何。我实际上可以使用一些可用的算法编写搜索代码。但我正在寻找可以满足此类目的的软件库。它可以是更大图书馆的一部分。对任何此类免费提供的库或代码的任何建议都可以。谢谢。 最佳答案 Wykobi怎么样?Wykobiisanextremlyefficient,robustandsimpletouseC++2D/3Dorientedcomputationalgeometrylibrary.
为什么?setGeometry:Unabletosetgeometry22x22+320+145onQWidgetWindow/'WidgetClassWindow'.Resultinggeometry:116x22+320+145(frame:8,30,8,8,custommargin:0,0,0,0,minimumsize:22x22,maximumsize:16777215x16777215).项目是:项目.proQT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=untitled5TEMPLATE=appSO
我正在寻找一个公式来找到圆上两个度数标记之间的最短距离(度数):例如,30度和170度(140度)。两个度数标记几乎可以是任何实数,不一定介于0和360之间(可以是负数,或远大于360,例如-528.2和740(即171.8度))。但是,距离应始终=0度。听起来很简单。但是,我一直在尝试为此找到一个好的解决方案,并且我尝试了很多不同的代码,但到目前为止我发现在我尝试过的所有情况下都不起作用。我在C++工作。有人有什么想法吗? 最佳答案 第1步:获取“原始”差异。例如,给定-528.2和740.0,这是1268.2。一种方式:raw_
一开始我以为这道题等同于判断一个多边形是不是凸多边形,但是貌似非凸多边形用一个三角扇还是可以画出来的。Considerthisshape,一个非凸多边形。人们可以很容易地想象出一些中心点区域可以让这个多边形用三角形扇形绘制(尽管会有其他中心点不允许)。给定一个固定的中心点,我希望能够确定定义多边形的2d点集是否允许使用单个三角形扇形绘制它。似乎关键是确保没有任何东西“妨碍”从中心点到任何顶点绘制的线,这意味着顶点的其他边缘线。但是,重要的是要尽可能降低计算成本,而且我不确定是否有很好的数学捷径来做到这一点。最终,我要让多边形的顶点移动,并且我需要确定一个顶点允许移动的“边界”,前提是其
Geomtery子类图创建GeometryGeometryFactorygeometryFactory=JTSFactoryFinder.getGeometryFactory();//点Coordinatecoord=newCoordinate(1,1);Pointpoint=geometryFactory.createPoint(coord);//线Coordinate[]coordinates=newCoordinate[]{newCoordinate(0,2),newCoordinate(2,0),newCoordinate(8,6)};LineStringline=geometryFa
我在2dsphere索引集合中插入一个点,并试图在多边形中找到它:c=db.foo;c.ensureIndex({'value.geometry':'2dsphere'});c.insert({value:{geometry:{type:"Point",coordinates:[0,0]}}});c.findOne({'value.geometry':{$geoWithin:{$geometry:{"type":"Polygon","coordinates":[[[-90,-90],[90,-90],[90,90],[-90,90],[-90,-90]]]}}}})//Pointisf