如何在Java中存储向量?什么是数据类型?

时间:2011-04-30 19:43:48

标签: java vector

我刚刚阅读了this教程。它是关于游戏开发的,它基本上说我需要将加速度,速度,位置存储为矢量来制作游戏物理。希望它有意义!我现在需要选择数据类型...例如我需要存储像......

这样的值
  

(3,5,2)

     

(6,2,3)

     

(2,3)

另外,我需要像这样做加法和减法...

  

(0,1,4)+(3,-2,5)=(0 + 3,1-2,4 + 5)=(3,-1,9)

在这种情况下我应该使用哪种数据类型?

对于一个向量,可能有两个整数(浮点数/双精度数)?也许是一个向量的数组,其中值是整数(浮点数/双精度数)?

3 个答案:

答案 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
}