Articles of 相交

刚体物理学概念:为什么翻译碰撞形状而不是变异呢?

交叉点在https://stackoverflow.com/questions/29993547/rigidbody-physics-concept-why-translate-collision-shape-on-the-fly-instead-of-m 我已经花了一些时间在Java中使用物理引擎的源代码,如JBox2D,Phys2D(包括2D)和JBullet(3D)。 我观察到,当刚体在每一步移动并发生变化时,附着在它们上面的碰撞形状都不是。 相反,它们始终位于坐标原点周围。 当检查两个刚体碰撞时,从每个刚体中取出一个“平移”对象,用于将两个被检查的形状的顶点(或其他定义的属性,取决于形状types)转换为其附件的世界位置。 这些信息然后被用来检测碰撞并对它们做出反应。 我已经总结出,主要目的是可以为多个实体重复使用相同的形状实例,因为它们在所描述的场景中是无状态的,并且可以在每一步中即时计算所需的信息,从而节省一些内存。 不过,我现在看到更多的优势在于改变形状的位置属性,就像它们的成员值一样。 每个形状的aabb和顶点会在每一步中改变一次,所以当一个形状与其他多个形状相交时,不需要多次计算相同的顶点。 另外,还可以更改形状的面积属性(损坏变形),因为它仅由一个物体使用。 所以问题是: 为什么通常使用位置不可变的碰撞形状而不是可变的形状? 编辑:发现相同的问题,但没有太多的答案在本地或世界坐标中存储刚体碰撞形状

如何在极坐标矩形内绘制圆形扇形

我试图通过在当前可视矩形范围内绘制圆形和环形扇区来优化游戏地图。 解决scheme应覆盖示例graphics中的两种情况(图1和2)。 我有一个图1的版本,它将矩形顶点转换为极坐标,并计算开始/结束角度以及内部和外部半径以便在内部绘制,但当矩形与圆的中心重叠时,这不起作用(图2)。 目前正在使用JavaScript和SVG进行绘图,因此使用这些绘图的例子将是理想的(或者仅仅是JS中的math部分)。 此外,网格中的每个“楔子”都应该分开绘制,因为它们每个都需要引擎作为离散对象来引用。

如何计算多个移动弧的交点时间和地点

我有岩石轨道卫星,卫星轨道行星,行星轨道太阳和太阳绕黑洞轨道,目前的系统可以有很多层的轨道。 任何物体的位置都是时间的函数,并且是相对于它运行的物体的函数。 (到现在为止还挺好)。 现在我想知道一个给定的2个对象(A,B),一个开始时间和一个速度,我该如何解决何时何地去。 我可以计算一下A和B在哪里。 所以我只是需要。 1:从A到B行进的方向(记住B正在移动(不在一条直线上))2:直线到达b的时间。 旅行必须以尽可能最短的距离排成一条直线。 作为这个问题的一个扩展,我怎么知道如果它更好地等待,EG在对象A上停留并等待一个小时,当对象更接近时,比在开始时从A到B出发更快。 欢呼声,这伤害了我的大脑。

莫勒三Tri路口

我已经完成了Moller的tri-tri路口例程。 它给出了每个三角形边与两个三角形平面之间的交线相交的位置: 真的,你得到了沿着上面所示的(真的很大的)紫色光线的t值forms的点位置。 所以你可以告诉三角相交如果t值重叠..? 这就是报纸所说的。 但是我可以向你展示t值重叠的场景,但三角形不相交: 所以我似乎无法找出丢弃哪个边缘值。 原文在这里 : http : //fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/pubs/tritri.pdf

动圈与某些方块的交点

我正在开发一个由正方形组成的2D游戏。 我需要做的是检查一个圆形在移动时是否与任何一个正方形相碰撞。 我有一个raycast函数来检查相同的想法,但使用一个点。 我认为最好的想法是做一个圆形射线,但我不知道该怎么做。 我有的资料: 起始圆的中心的坐标 圆圈中心的最后一个坐标 圆的半径 给定一些坐标,我可以检查这些坐标是否有一个正方形。 我很感激你能帮助我的任何帮助。 (链接到教程(我没有发现任何关于这个),想法,….) 谢谢!

解释这个线段交点代码

我一直在阅读这篇关于使用视线寻找多边形网格的文章,文章中有几个代码片断。 其中之一,我试图理解,是一个简单的函数,确定是否两条线段相交。 这篇文章的function(在C#中,虽然对我来说不重要): public static bool LineSegmentsCross(Vector2 a, Vector2 b, Vector2 c, Vector2 d) { float denominator = ((bX – aX) * (dY – cY)) – ((bY – aY) * (dX – cX)); if (denominator == 0) { return false; } float numerator1 = ((aY – cY) * (dX – cX)) – ((aX – cX) […]

直线和矩形的交点

我必须计算一个线段(用2个点表示)与一个矩形的交点。 例如: 轴alignment的矩形角: (0,0)(100,100) 要点1: (50,50) 第2点: (50,150) 预期成果: (50,100) find线段与矩形的交点的方法是什么?

检测一个点是否在一个矩形内

我有一个2D游戏(x和y)和一个矩形(x,y,宽度,高度)的鼠标坐标。 如何find点是否在矩形中? 我没有任何代码张贴在这里。 我只是在寻求帮助。

光三角交汇点问题

我正在尝试在由三角形组成的网格上执行光线三角形相交。 下面的代码似乎工作正常,但只有大约50%的时间。 光线经常进入没有检测到交叉点的位置。 在我的函数中是否有任何错误在所有情况下都不检查交集。 bool rayTriangleIntersect(Vector3 rayOrigin, Vector3 rayDirection, Vector3 vert0, Vector3 vert1, Vector3 vert2, ref Vector3 intersectionPosition) { // this originally comes from http://www.graphics.cornell.edu/pubs/1997/MT97.pdf float u, v, t, det, inv_det; Vector3 edge1, edge2, pvec, tvec, qvec; Vector3 direction = rayDirection; direction.Normalize(); t = v = u = 0f; edge1 = vert1 – vert0; edge2 […]

线性交叉参数方程

我确信这个问题以前已经被问过了。 不过,我试图通过将纸上的等式转换成实际的function来连接点。 我以为在math网站上问这个问题很有意思(因为它将会用于游戏)。 假设我们有vector方程: x = s + Lr; 其中x是结果vector,是我们的起始点/vector。 L我们的参数和我们的方向vector。 (不知道这是这样的,请纠正我)正常的方程是: xn = c; 如果我们用我们的vector方程代替, (s+Lr).n = c. 我们现在需要隔离导致的L L = (c – sn) / (rn); L需要为0 <L <1,意味着它需要在0和1之间。 我的问题是:我想知道L是什么,所以如果我用两个向量方程(或两行)代替L,他们应该给我相同的交点坐标。 那就是如果它们相交。 但是我不能用两条线来包装我的头,并find适合交叉点的参数。 有人可以用一个简单的例子说明如何将其转换为函数/方法?