Tag: 几何

以编程方式纠正鱼眼失真

BOUNTY状态更新: 我发现如何映射线性镜头 ,从destination坐标到source坐标。 你如何计算从中心到鱼眼的直线距离? 1)。 我真的很难扭转它,并将源坐标映射到目标坐标。 什么是相反的,在我发布的转换函数风格的代码中? 2)。 我也看到,我的失真在一些镜头上是不完美的 – 可能是那些不是严格线性的。 这些镜头的等效源和目标坐标是多less? 同样,更多的代码不仅仅是math公式,请… 问题如最初所述: 我有一些观点用鱼眼镜头描述的位置。 我想将这些点转换成直线坐标。 我想要保持形象不变。 我已经find了如何生成鱼眼效果的说明,但没有find如何反转的说明。 还有一篇博客文章介绍了如何使用工具来完成这项工作。 这些照片是从那个: (1) : SOURCE 原始照片链接 input: 鱼眼畸变修复的原始图像。 (2) : DESTINATION 原始照片链接 输出: 校正图像(技术上还有透视校正,但这是一个单独的步骤)。 你如何计算从中心到鱼眼的直线距离? 我的function存根如下所示: Point correct_fisheye(const Point& p,const Size& img) { // to polar const Point centre = {img.width/2,img.height/2}; const Point rel = {px-centre.x,py-centre.y}; const […]

如何智能地降解或平滑GIS数据(简化多边形)?

我有详细的美国县地图,从TIGER LINE数据集。 我怎样才能对数据进行采样,平滑或降级,这样我就可以得到更直观,更方便,更“嘈杂”的形状来代表地理特征​​ – 在这种情况下,只是县界限和州界线,但也可能在一般情况下? 如果可以高效地完成抽样,则抽样可能发生,或者可以生成并存储并行数据集。 我使用的是PostGIS ,而这些行是由shp2pgsql生成的多重多段线,但是任何解决方法都是使用一条波浪线,并将其减less到与人类解释程序大致相同的平滑线,这将非常有用。

Postgis安装:键入“几何”不存在

我正在试图用Postgis创build表。 我通过这个页面来做。 但是当我导入postgis.sql文件,我得到了很多错误: ERROR: type "geometry" does not exist 有谁知道我该如何解决?

非相交线段,同时最小化累积长度

我想find一个更好的algorithm来解决以下问题: 2D中有N个起点(紫色)和N个目标点(绿色)。 我想要一个algorithm,通过一个线段(棕色)连接起点到目标点,而没有任何这些线段相交(红色),同时最小化所有线段的累积长度。 我在C ++中的第一次努力是排列所有可能的状态,find无交叉状态,并且在那些最小总长度为O(n!)的状态中 。 但我认为还有更好的办法。 任何想法? 或者用于search的好关键字?

在给定中心点,半径和程度的圆上找出点

我做了这样的math已经有10年了…我正在用2D编程一个游戏,并且把玩家移动到周围。 当我移动玩家时,我正试图计算距离玩家位置200个像素圆上的点,在-360到360之间给出正的或负的angular度(度)。屏幕是1280×720,0.0是中心点的屏幕。 玩家在整个笛卡尔坐标系中移动。 我试图find的一点可能是在屏幕外。 我尝试了文章上的公式find半径和angular度的点,但我不相信我理解什么“angular度”是因为我越来越奇怪的结果,当我通过angular度为-360到360成为angular(COS)或罪(angular度)。 所以,例如,我有… 1280×720在笛卡尔飞机上 中心点(球员的位置): 令x =最小-640到最大640之间的数字 令y =最小-360到最大360之间的数字 玩家周围的半径:让r总是= 200 angular度:让a = -360到360之间的数字(允许负向指向下或正向指向上,所以-10和350会给出相同的答案) 在圆上返回X的公式是什么? 在圆上返回Y的公式是什么?

有没有一种有效的algorithm来生成二维凹面船体?

从GIS文件(城市地图)中获取一组(2D)点,我需要生成定义该地图(边界)的“轮廓”的多边形。 其input参数将是设置的点和“最大边缘长度”。 然后它会输出相应的(可能是非凸的)多边形。 我发现迄今为止最好的解决scheme是生成Delaunay三angular形,然后删除比最大边长更长的外边。 在所有的外部边缘比这个更短之后,我只需要移除内部边缘并得到我想要的多边形。 问题是,这是非常耗时的,我想知道是否有更好的方法。

find最less的矩形来覆盖一组没有重叠的矩形的algorithm

我有一组矩形,我想“减less”设置,所以我有最less数量的矩形来描述与原始设置相同的区域。 如果可能的话,我希望它也快,但是我更关心的是尽量减less矩形的数量。 我现在有一个大部分时间都在使用的方法。 目前,我从最左上angular的矩形开始,看看是否可以在保持矩形的同时将它向右和向下展开。 我这样做,直到它不能再展开,删除和拆分所有相交的矩形,并将扩展的矩形添加到列表中。 然后我再次用下一个最左上angular的矩形开始这个过程,依此类推。 但在某些情况下,这是行不通的。 例如: 有了这三个矩形的设置,正确的解决scheme将最终有两个矩形,如下所示: 但是,在这种情况下,我的algorithm从处理蓝色矩形开始。 这向下扩展并拆分黄色矩形(正确)。 但是,当黄色矩形的其余部分被处理时,不是向下扩展,而是先扩展,然后收回之前分割的部分。 然后最后一个矩形被处理,它不能向右或向下扩展,所以原来的一组矩形被留下。 我可以调整algorithm先下拉,然后右下。 这可以解决这个问题,但是在类似的情况下会导致同样的问题。 编辑:只是为了澄清,原来的一组矩形不重叠,不必连接。 如果连接了矩形的一个子集,完全覆盖它们的多边形可以在其中有孔。

在Python中好的几何图书馆?

我正在寻找一个良好的和发达的图书馆几何操纵和评价在Python中,如: 评估二维和三维两条线(如果有的话) 评估平面和线之间的交点或两平面之间的交线 评估线和点之间的最小距离 find通过一个点的平面的正交 旋转,平移,镜像一组点 find由四个点定义的二面angular 我有一个所有这些操作的纲要书,我可以实现它,但不幸的是,我没有时间,所以我会喜欢一个图书馆,这样做。 大多数操作对于游戏的目的是有用的,所以我确信这些function中的一些可以在游戏库中find,但是我不希望包括我不需要的function(例如graphics)。 有什么build议么 ? 谢谢

你怎么能确定一个点是在一个线段上的另外两个点之间?

假设你有一个二维平面,其上有2个点(称为a和b),每个点用一个x整数和一个整数表示。 如何确定另一个点c是否位于由a和b定义的线段上? 我使用python最多,但任何语言的例子将是有益的。

如何判断一个点是在一条线的右边还是左边

我有一套要点。 我想把它们分成两个不同的集合。 要做到这一点,我select了两个点( a和b ),并在它们之间画一条想象的线。 现在我想把这一行中的所有点都放在一个集合中,而那些在这一行中正确的点集合在另一个集合中。 我怎么能告诉任何给定的点z是在左边还是在右边呢? 我试图计算azb之间的angular度 – 小于180的angular度在右侧,在左侧大于180 – 但是由于ArcCos的定义,计算的angular度始终小于180°。 是否有一个公式来计算angular度大于180°(或任何其他公式select正确或左侧)?