我正在寻找一个简化的算法来测试OBB和球体之间的交点。我见过一些算法,但大多数算法过于复杂,因为它们需要考虑OBB上的所有3个旋转轴。在我的例子中,OBB只在Z轴上旋转,所以我觉得标准的圆形/旋转矩形算法和球体/OBB算法之间的某种东西可能会更优化。
作为参考,OBB存储为中心的Vector3
,半维的另一个Vector3
,方向的Matrix33
-请记住,我们可以保证,当转换为欧拉旋转时,两个轴将为0,只有Z轴会改变。球体只是中心的Vector3
和半径的浮动
。
我怀疑,只要简单地计算出球体横截面的半径(对应于OBB的顶部和底部),以及球体的最大半径(如果其中心位于顶部和底部之间),然后对这两个(或三个)半径中的每一个进行圆/旋转矩形碰撞检查,就可以实现这一点。我不确定的是,这是否会比完整的Sphere/OBB测试更容易(在编码和性能方面)。
(我将离开这个语言不可知论者。我正在用C语言工作,但是我会接受任何通用语言的算法,只要它足够简单,可以翻译成C。)
是的,有相当简单的方法来计算矩形和圆形之间的距离(和交点)。它可以很容易地扩展到3D盒和旋转盒。
在您的情况下(仅围绕Z轴旋转),应用简单的坐标变换(围绕该轴旋转球体中心),并使用用于轴对齐框的方法更简单。
在通常情况下,我们可以通过向量BoxCenter-SphereCenter
到边向量的投影长度来计算所需的距离,但我认为旋转一点简单计算更有效。
我想寻求有关使用巴比伦旋转的帮助。js框架。 我需要球体旋转45度,与对角圆对齐,对角圆有45度的方向,但我不明白。 我的代码在下面的链接中:https://codepen.io/polalas/pen/VwvaKwL 负责旋转的方法是loop()方法,每次渲染场景时都会触发该方法。 我想我对轮换处理不当。有人能帮忙吗?
这是我第一次与kotlin mvp Rx一起使用mockito,并且,我得到一个错误“wanted但not invoked-but,This mock正好有1个交互” 这里是我的演示者类 这里是我的演示者视图 }此处是我的AppSchedulerProvider类AppSchedulerProvider:SchedulerProvider{override fun trampoline():Sch
问题内容: 我有一个SCNCamera场景设置,可以围绕一个对象旋转。 限制相机围绕物体旋转的最佳方式是什么? 示例:除了能够围绕整个球体旋转之外,我如何将旋转限制为单个半球? 我的第一个尝试是查看.allowsCameraControl是否存在任何限制。找不到任何东西。 然后,我尝试使用c#Unity:鼠标轨道脚本,不走运。 关于如何解决或解决此问题的一些指示将非常有用。 问题答案: 您似乎就快
我试着让两个立方体以不同的方式旋转。 为了设置旋转,我这样做。 在多维数据集类内部,我没有使用GL11.glLoadId相()来重置旋转,而是做了这样的事情。 这将重置每个轴的旋转。 数组“rot”保存x、y和z旋转,并通过多维数据集类中的这3种方法进行更新。 单独地,每个GL11.glRotatef(etc, etc, etc)和GL11.glRotatef(etc*-1.0f, etc, et
好了,现在真正有趣的事情开始了。本节,我们将创建一个旋转的3D立方体,该立方体具有不同颜色的表面。为了做到这一点,我们将介绍两类新的缓冲区——颜色缓冲区和索引缓冲区。 图9-3 旋转的立方体 操作步骤 按照以下步骤,使用WebGL创建一个旋转立方体: 1. 链接到glMatrix库和WebGL包装器: <script type="text/javascript" src="glMatrix-1.
我试图创建一个第一人称相机。我从我的XNA项目中提取了一段代码,并试图将其转换为java(LWJGL)。 如果我移动鼠标,俯仰和偏航会增加/减少。在开始运行我的游戏时,它运行良好,但在一些动作后,我无法向下或向上看。如果我的位置是 性能良好的XNA代码: 所以我发现LWJGL和XNA在旋转矩阵方面有一些不同。 Java: 结果: {1.0 0.0 0.0 0 0.0}{0.0 0.3299931-