Articles of 交叉口

检测到OBB-OBB交叉点后应该怎么做

我使用这段代码来检测两个OBB之间的交集。 问题是,我不知道如何检测后做什么。 我试着用一个简单的algorithm: if (collision detected) { move character back to its position on previous frame } 但是这不是我所需要的,因为角色正在旋转并移动到某些点(通常是鼠标点击位置)。 当它接近OBB对象并旋转到一个点时,它的OBB更新(所有OBB角落的位置被重新计算),并且大多数时候更新的OBB与一个靠近的对象相交,所以结构卡住在它的位置。 我如何处理轮换问题,或者当OBB与另一个方法访问时可以采取什么其他方法来阻止字符?

检查一个vector是否包含在一个可视的视锥内

我有一个由四个向量a , b , c , d给出的三维金字塔,并且想要testing给定的向量x是否在该区域内。 这是一个图像: 一个相关的问题可以在这里find: 二维问题 。 我该如何testing这个向量是否被其他人包含

获取两个移动的非均匀轴alignment边界框之间的碰撞时间

我有一个问题find两个可能移动或静态物体的确切时间碰撞。 两个对象都有AABB数据(HalfExtents,Min,Max,Centervector和东西)和一个速度vector。 正如我写的那样,物体可以移动,但是不能移动。 我从哪里可以得到确切的碰撞时间? 你能给我一个伪代码,或者至less有一些方向,如何解决这个问题?

椭圆体上最近的点

我需要知道如何将椭球表面上的最近点移动到另一点。 我有一个想法,但显然我错了,过于简单。 我所做的是挤压椭圆体并将其指向局部空间,所以椭圆体是一个单位圆 vector3 pointLocalCoord = ( pointOriginal – ellipsoid.origin ) / ellipsoid.radii 然后从那里,最接近的点应该是1,从原点的变换点的方向 vector3 closestPointOnEllipsoidLocal = norm ( pointLocalCoord ) 然后回到标准空间 vector3 closestPointOnEllipsoidWorld = closestPointOnEllipsoidLocal * ellipsoid.radius + ellipsoid.origin 但是,当然,所有这些似乎都行不通,我很好奇,是否有任何机构可以指向我已经存在的一些代码的方向; 因为我试过的一些文章有点不在我的知识范围之内。 另外,如果这看起来是正确的,请告诉。 我很确定它错了。 编辑:对于这个和我的其他问题没有反应,抱歉。 他们不一样,我正在用别的东西来试探

椭球与盒子碰撞检测

我试图写一些碰撞检测代码。 自动柜员机我有代码正确地解决椭圆体诉椭圆体碰撞,和盒与框体碰撞,但椭球体与框体碰撞不起作用。 一般来说,你如何testing这两者之间的区别。 我一直在做的是: find椭圆体上的最接近点,反之亦然。 vector3 closestVertexOnBox = // Closest vertex on the box to the ellipsoid; vector3 closestPointOnEllipsoid = // Closest vertex on the ellipsoid to the box 在这种情况下(椭球与盒子),你有4个轴。 从圆心到盒子上最近点的轴。 X,Y,Z标准轴(假设它是AABB) – 把他们全部放在一个数组中 vector3[] axes = { normalize( closestVertexOnBox – ellipsoid.origin ), unitX, unitY, unitZ } 然后,对于该数组中的每个轴,将vector从每个形状的中心投影到与其他形状最接近的顶点; 到每个轴上以查找投影的半宽度。 float minOverlap = infinity vector3 overlapAxis; […]

如何确定网格中的哪些单元格与给定的三角形相交?

我目前正在编写2D AI模拟,但是我不完全确定如何检查代理的位置是否在另一个代理的视野内。 目前,我的世界分区是简单的单元格空间分区(网格)。 我想用一个三角形来表示视野,但是如何计算与三角形相交的单元呢? 类似于这张照片: 红色区域是我想要计算的单元格,通过检查三角形是否与这些单元格相交。 提前致谢。 编辑: 只是为了增加混乱(或者甚至使其更容易)。 每个单元格都有一个最小值和最大值vector,其中min是左下角,max是右上角。