问题标签 [polygons]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2365 浏览

c# - 创建用点填充的多边形

替代文字我正在使用下面的代码来创建多边形。我只想用黑点填充这个多边形表面,我该怎么做,然后我想把这个多边形转换为位图或内存流,怎么做?

0 投票
1 回答
3318 浏览

c++ - OpenGL平滑多边形

我正在尝试使用 OpenGL 使它成为一个平滑的多边形,但它没有做任何事情。有人可以解释我做错了什么吗?

提前致谢!

0 投票
1 回答
1192 浏览

algorithm - CUDA 高效多边形填充算法

我需要有效的填充算法来填充封闭的多边形(例如扫描线填充),我可以在 CUDA 上运行它。你有什么建议吗?

提前感谢任何重播!

0 投票
1 回答
6060 浏览

math - 给定起点和终点的法线,如何计算 3D 三次贝塞尔曲线上点的法线?

我正在尝试使用单个 3D 三次贝塞尔曲线来渲染“3D 色带”来描述它(色带的宽度是一定的)。第一个和最后一个控制点有一个与它们相关的法线向量(它们总是垂直于这些点的切线,并描述了这些点上色带的表面法线),我试图平滑地插入法线向量曲线的过程。

例如,给定一条形成字母“C”的曲线,第一个和最后一个控制点的表面法线都指向上方,色带应该从平面开始,与地面平行,然后慢慢转动,然后再次变平,面向与第一个控制点相同。要“顺利”完成此操作,它必须在曲线的中途面向外。目前(对于这种情况),我只能让所有表面朝上(而不是在中间向外),这会在中间产生难看的过渡。

这很难解释,我在这个例子的下面附上了一些图片,它现在看起来像什么(所有表面朝上,中间急剧翻转)和它应该是什么样子(平滑过渡,表面缓慢旋转)。银色面代表正面,黑色面代表背面。

不正确,它目前的样子:

正确功能区 http://img211.imageshack.us/img211/4659/ribbonincorrect.th.png

正确,它应该是什么样子:

功能区不正确 http://img515.imageshack.us/img515/2673/ribboncorrect.th.png

我真正需要的是能够为 3D 三次贝塞尔曲线上的任何点计算这个“混合法线向量”,我可以毫无问题地生成多边形,但我不知道如何让它们顺利旋转如图所示。完全不知道如何进行!

0 投票
3 回答
3861 浏览

javascript - 如何“排序”多边形 3d?

我仍在研究我的“javascript 3d 引擎”(stackoverflow 中的链接)。起初,我所有的多边形都是立方体的面,所以按平均 Z 对它们进行排序工作正常。但现在我已经“进化”了,我想以正确的顺序绘制我的多边形(可能包含超过 4 个顶点),即最后绘制那些靠近相机的多边形。

基本上,我知道如何旋转它们并将它们“透视”化为 2D,但不知道如何以正确的顺序绘制它们。

只是为了澄清:

谁能帮忙?

ps:我想出了一些“流行语”,寻找解决方案:z-buffering,光线投射(?!),平面方程,视图矢量等等 - 我想我需要一个简单易懂的答案,所以这就是为什么我问这个。谢谢。

p.s2:我不太介意重叠或相交多边形......所以也许画家的算法确实可能很好。但是:到底是什么?如何确定多边形的距离?多边形有很多点。

0 投票
1 回答
496 浏览

api - KML polygon colouring and mouse clicks

I'm working with http://workfoldr.com.s118234.gridserver.com/gmaps/ and in the KML file (found @ http://workfoldr.com.s118234.gridserver.com/gmaps/file.kmz) it's clearly stated that there is supposed to be color-filled polygons.

But none are filled in, why?

另外,我可能需要绑定鼠标点击事件。这只是 gmap API 中的一个简单事件处理程序吗?

0 投票
2 回答
6188 浏览

flash - 在 Box2D 中绘制自定义多边形

我正在制作一个 Flash 游戏,在尝试在 Box2D 中绘制多边形时遇到了一个非常奇怪的问题。

这是我使用的代码:

其中 vertexArray 是包含 4 个 b2Vec2 顶点的有效数组,构成一个凸形。

问题是,当我测试时,碰撞不适用于那个身体。大多数其他物体 - 敌人,用户控制的角色 - 直接穿过,就好像身体根本不存在一样。一些光线投射也会通过。

令人气愤的是,我拥有的一种身体(一个自定义敌人)以某种方式确实检测到了身体并与之发生了碰撞。特定类型的敌人尝试的光线投射确实有效 - 当您的角色隐藏在多边形后面时,就像他们看不到他一样。

另一件奇怪的事情:当我尝试相同的代码时,只使用 SetAsBox 而不是 SetAsArray,它完全可以正常工作。

我正在使用自定义的 ContactListener 类,但我没有进行任何联系人过滤(除非可以在没有意识到的情况下这样做)。

我正在使用 Box2D 2.1a 的 Flash 9 版本。

有什么建议么?我错过了一些明显的东西还是我(上帝保佑!)发现了一个错误?谢谢你的帮助!

安德烈

0 投票
1 回答
590 浏览

2d - 通过填充矩形检查许多(小)多边形与一个(大)多边形的交集?

我有一个我认为应该很常见的 2D 计算几何/GIS 问题,我希望找到一些现有的代码/库来使用。

问题是检查一大组(数千个)小多边形的哪个子集与单个大多边形相交。(“小”和“大”指的是多边形覆盖的空间量,而不是定义它们的点数,尽管通常假设定义多边形的点数大致与其几何尺寸成正比. 为了给出比例感,把“大”想象成美国一个州的多边形,把“小”想象成一个城镇的多边形。)

假设使用标准 CheckIfPolygonsIntersect( P, p ) 函数(针对一个大多边形 P 为每个小多边形 p 调用)的简单解决方案太慢了。似乎有一些方法可以预处理大多边形,以使大多数小多边形的交集检查变得微不足道。特别是,您似乎可以创建一小组部分/几乎填充大多边形的矩形。同样,您可以创建一小组矩形,部分/几乎填充实际上不在大多边形内的大多边形的边界框区域。然后,您的绝大多数小多边形可以被简单地包含或排除:如果它们完全在大多边形的边界矩形之外,则它们被排除在外。如果它们完全位于内部边界矩形但外部多边形矩形之一的边界内,则将它们排除在外。如果它们的任何点在任何内部矩形内,则它们被包括在内。只有当上述都不适用时,您才必须调用 CheckIfPolygonsIntersect( P, p ) 函数。

这是一个众所周知的算法吗?您是否知道现有代码可以为任意(凸面或凹面)多边形计算一组合理的内部/外部矩形?矩形不必在所有情况下都是完美的。他们只需要填充大部分多边形,以及大部分内部边界矩形但外部多边形区域。

这是我如何计算这些矩形的简单计划:

  • 取大多边形的边界框并在其上构建一个 10x10 的点网格
  • 对于每个点,确定它是在多边形内部还是外部
  • 通过在四个方向中的每一个方向上迭代地扩展每个点,将每个点“增长”成一个矩形,直到其中一个矩形边缘穿过多边形边缘之一,在这种情况下,你走得太远了(这实际上是在“二进制”中完成的search” 一种迭代,因此只需几次迭代,您就可以找到在每个方向上扩展的正确数量;当然还有一些问题是一次最大化边缘还是彼此一致)
  • 被另一个点的扩展覆盖的任何尚未扩展的网格点都会消失
  • 当所有点都已扩展(或消失)时,您将拥有一组内部和外部矩形

当然,大多边形的某些疯狂的凹形可能会导致一些不良/小矩形。但是假设多边形大多是合理的(例如,假设它们是美国各州的形状),看起来你会得到一组很好的矩形,并且可以极大地优化你随后要做的数千次交叉检查.

该算法是否有名称(和代码)?

编辑:我已经在使用四叉树来确定可能与大多边形的边界矩形相交的小多边形。所以问题在于检查哪些多边形实际上与大多边形相交。

谢谢你的帮助。

0 投票
1 回答
4210 浏览

r - 使用多边形图层下方的等高线切割多边形

我想根据高程将多边形图层切割成两部分(上部和下部)。多边形可能是凸面或凹面,切割的位置可能会有所不同。等高线的间隔为 5m,这意味着我可能需要生成一个具有很多浓缩等高线的等高线,例如 1m 间隔。关于如何在 ArcGIS 或 R 中更好地做到这一点的任何想法?下面是 Q 的运行示例:

先谢谢了~

马可

0 投票
1 回答
1152 浏览

c# - 将矩形图像拆分为多边形以模拟破碎玻璃

我正在编写一些 C# 代码,我想在其中获取一个 2D 矩形并将其拆分为更小的 2D 多边形。我希望效果看起来像矩形是由玻璃制成的,并且在随机位置用锤子敲击它。我想知道是否有人知道一个好的算法来帮助我解决这个问题。我已经尝试使用随机点来模拟这种效果的 FortuneVoronoi 代码,但是很难在合理的 CPU 时间内将完成的 VoronoiGraph 转换为一组不相交的多边形。