Questions tagged «computational-geometry»


1
如何使用SAT解决复合形状的碰撞?
SAT是确定任意凸多边形之间的碰撞的一种不错的方法。您甚至可以获得解决冲突所需的向量。 为了解决复杂(非凸)形状之间的碰撞,我正在考虑某种由多个凸多边形组成的复合形状。如果在宽相中发生碰撞(例如,圆与圆或AABB与AABB),则可以通过检查复合形状中的每个多边形与其他复合形状中的每个多边形来解决冲突。 我想知道实际上分离对象的最佳方法是什么?幼稚的方法是仅取最大幅度的向量并将其用于分离。在下图中,这将是V 2 但是,如果分离向量指向不同的方向,则无法立即解决碰撞,可能需要多次迭代。因此,在下一张图片中,我们将使用V 1进行分离,并在另一个迭代中使用V 2(或接近V 2的形状,因为形状将移动V 1的量)。 这种方法将无法分离指向彼此相反方向的向量,或者在如下图所示的情况下: 在这里,我们将在左侧的状态和右侧的状态之间无休止地进行迭代。 因此,在这里提出一个实际的问题:解决这个问题的合理方法是什么?我想将复合多边形用于复杂形状是一个合理的想法,但我真的很想知道在这种情况下应如何解决碰撞?如第三张图片所示,如何检测死角?

6
检查两个移动的AABB是否相交的最快方法是什么?
我有两个正在移动的AABB,检查它们是否在框架下相交的最快方法是什么? 通过移动,我的意思是不仅要检查常用的矩形交集方法,还意味着某种简单易行的测试,该测试仅返回布尔值,没有命中时间或其他任何东西。 我认为就是这样简单地做到这一点: 但是那个Hexagon非常复杂,我不知道如何计算AABB-多边形相交,也许有更简单的方法吗? 您最喜欢的任何编程语言,我都可以轻松移植。 谢谢。

1
程序几何生成
我最近一直在研究OS X的SceneKit,并注意到有几种工厂方法可以创建几何形状,例如: 框,胶囊,锥,圆柱,平面,金字塔,球体,圆环和管。 我有兴趣在我的渲染器中添加这样的原始形状,但是我一直在努力寻找任何合理的来源,从中我可以收集对程序生成的理解。有许多资源详细介绍了该理论,但是缺少适当的源代码来对其进行备份。 SceneKit提供了工厂方法,该方法允许动态设置此类形状的属性。对于Box,可以为每个面应分为的宽度,高度和深度段数提供整数值。 我了解理论,但缺乏知识来开始细分几何面以实现所需的效果。 每个形状的顶点很可能很容易在简单的循环中生成。让我感到困扰的是,我知道如何创建这些面,或者是为每个面创建适当的纹理坐标。可以按每张面孔计算法线,因此我很自信可以实现自己想要的目标,只是知道从哪里开始。 谁能提供有关程序几何的任何详细信息?我真正需要的是一些源代码来收集一些信息。我在教程中搜索了很多内容,但到目前为止,只提出了一些合理的站点或博客。任何优秀的书籍,教程,博客或研究论文将不胜感激。 根据评论进行编辑 我应该澄清的是,我知道如何为基本形状创建顶点,其中大多数可能可以通过简单的循环来实现。我不理解的是如何从生成的顶点数组创建面。如何从看似无序的顶点阵列中创建一个或多个三角形带? 我假设一旦超过了这一点,就可以从每张脸创建法线。尽管我还没有深入研究,但是我已经看到了很多对此的参考,并且确信它很容易实现。 理想情况下,我希望能够从一组给定的属性(例如SceneKit提供的方式)生成几何。鉴于SceneKit已经做到了,并且您可以在Blender和Maya等中做类似的事情,我想我不是在尝试实现不可能的事情。 最后一个方面是应用纹理。再说一次,这不是我实现的,但是已经阅读并了解了需求。 这里的主要问题是我知道我想要实现什么,但是正在努力解释如何为上述原语实现。我希望能够通过源代码找到一些相似的知识,但是到目前为止,我确实还没有遇到任何合适的东西。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.