类似于javax.vecmath.Matrix4f.rotate()的Android 3D数学库(向量、矩阵等)。

5

我是新手,正在学习Android。

请问SDK中是否有Android 2.2 3D数学库?我找不到,但希望能够使用。在Eclipse中,由于某些原因,我不能使用javax.*包。

我真正需要的是关于任意轴和任意角度的旋转。

如果没有必要,我不想使用NDK。如果有免费的Java 3d数学库可用,并且可以与Android一起使用,那就太好了。

它应该具备基本的3d数学,如cross()、dot()等,以及任意旋转和缩放。

谢谢!


javax.*在安卓上仍未得到支持(至今),很遗憾,我知道很糟糕 :( - st0le
2个回答

2

我刚刚将vecmath源代码放入我的项目中,除了Color*类(这并不是什么大问题),它似乎可以编译和正常工作。


1
链接 我认为这是正确的链接。虽然不是GPL,但也不完全自由。严格来说,我建议的简单修改在商业环境下似乎是不允许的。唉。 - PeterT
我猜vecmath的权威来源是http://java.net/projects/vecmath。 SVN历史记录显示他们在2008年2月28日切换到GPL v2。在此日期之前,许可证是不同的。我猜你仍然可以检出旧版本并按照旧条款使用它。 - SnakE
抱歉,这是正确的许可证链接(http://java.net/projects/vecmath/sources/svn/content/trunk/LICENSE.txt?rev=126)和旧许可证下的最后提交(http://java.net/projects/vecmath/sources/svn/show?rev=126)。@peter,感谢您提供许可证指针。 - SnakE
现在我读了实际的JDL许可证,我得出的结论是它只允许你使用vecmath来实现Java 3D规范。这意味着它比GPL还要更加限制性。 - SnakE
它说:“2.1……Sun授予您与代码和相关文档有关的[许多很酷的东西],但仅作为您自己兼容实现(如下所定义)的一部分……”然后它说,“3.1.1 兼容实现必须符合完整的规范……3.1.2 兼容实现必须……通过最新的兼容性要求……”在这种情况下,它是Java3D,并且我理解为只有在您实际开发完全兼容的Java3D实现时才能使用许可的代码。 - SnakE
显示剩余3条评论

1
我能找到的最好的是math package of jMonkeyEngine。它需要一些修改才能与引擎的其余部分分离工作。具体来说,您只想保留Matrix*fVector*fQuaternionFastMath类,并删除任何依赖于其他包中的类的方法。幸运的是,BSD许可证使这对任何目的都成为可能。

乍一看似乎合理。如果可以轻松地将它们保留下来,那么将所有类都留下可能是明智的,制作一个新的BSD项目分离版本可能是合适的选择。看起来这是一组有用的基本功能。您知道它有多少依赖其他软件包吗? - PeterT
@peter,大部分情况下,我不得不剥离Savable接口和相关方法,因为它引入了export包,而export又引入了asset,似乎依赖于引擎中的每个类。然后,我从util中删除了任何使用TempVars的方法,因为TempVars依赖于scenecollision包。然后,我从math中删除了不需要的类,因为每个类都需要清理,我想尽量减少我的工作量。 - SnakE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接