我刚刚阅读了this教程。它是关于游戏开发的,它基本上说我需要将加速度,速度,位置存储为矢量来制作游戏物理。希望它有意义!我现在需要选择数据类型...例如我需要存储像......
这样的值(3,5,2)
(6,2,3)
(2,3)
另外,我需要像这样做加法和减法...
(0,1,4)+(3,-2,5)=(0 + 3,1-2,4 + 5)=(3,-1,9)
在这种情况下我应该使用哪种数据类型?
对于一个向量,可能有两个整数(浮点数/双精度数)?也许是一个向量的数组,其中值是整数(浮点数/双精度数)?
答案 0 :(得分:8)
听起来你想要三个值(可能是双倍的):
public class Vector3
{
private final double x;
private final double y;
private final double z;
public Vector3(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}
public Vector3 plus(Vector3 other)
{
return new Vector3(x + other.x, y + other.y, z + other.z);
}
// etc
}
请注意,我已将其变为不可变 - 这并非总是性能的最佳选择(可能与您的情况相关),但有助于提高可读性。
答案 1 :(得分:1)
也许commons-math OpenMapRealVector
可以使用。
答案 2 :(得分:0)
或者您可以使用泛型:
public interface MathVector<T extends Number>
{
MathVector<T> add(MathVector<T> addend);
T innerProduct();
// Vectors have more than this, but it makes the point
}