java - Ray 和 intersectRayTriangle 如何工作?

标签 java android libgdx

所以基本上我想检查来自大炮的激光束是否击中了地形。要么我不明白 Ray 的概念,要么有什么地方不对。 让我们来看看这行代码

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(1,0,0), hitPoint);

intersectorRay 的原点为 0,0,0,方向为 1,0,0,因此我假设它从点 0,0 指向“直右”。 那么给定三角形顶点的坐标,它应该与它相交,对吗?代码返回 false。

另一方面,现在这一行返回 true:

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(-1,0,0), hitPoint);

对其他示例的测试证明,只有当 Ray 的原点在三角形内时它才返回 true(很明显,在这种情况下它击中了某些东西......)。

我做错了什么? 我使用的是 9 月 6 日的最新夜间版本的 libgdx。

最佳答案

我要在这里走出去,说它在你的第一个例子中返回 false 的原因是因为光线没有穿过三角形的面,因为它在同一个 xy 平面上射线正在射击。

相反,如果您的三角形在 zy 平面上(或任何其他不是光线穿过的平面的平面),我怀疑您会得到预期的结果。

关于java - Ray 和 intersectRayTriangle 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413222/

相关文章:

android - 如何在应用程序打开时获取服务器更新?

android - LibGDX:一个有 20 个可以滚动的矩形的屏幕

在 Android 上运行 libgdx 应用程序时出现 java.lang.NoClassDefFoundError

java - 如何解决 Android Studio 编译时出现的与 .class 相关的文件未找到错误?

java.lang.UnsatisfiedLinkError : in HTTP Get on Android

java - 如何将声音从 Android 设备流式传输到 Java 服务器?

添加 pdfview 库时 Android Studio 构建失败

libgdx - 了解 LibGDX 坐标系和绘制 Sprite

java - JAVA计数字母程序中计数错误

java - TextView 不显示在对话框中