Как хранить векторы в Java?Какой тип данных? - PullRequest
0 голосов
/ 30 апреля 2011

Я только что прочитал этот учебник.Речь идет о разработке игр, и в основном это говорит о том, что мне нужно сохранять ускорение, скорость, положение как векторы для создания игровой физики.Надеюсь, это имеет смысл!Мне нужно выбрать тип данных сейчас ... например, мне нужно хранить значения вроде ...

(3, 5, 2)

(6, 2, 3)

(2, 3)

Кроме того, мне нужно будет выполнять сложение и вычитание следующим образом ...

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

Какой тип данных я должениспользовать в этой ситуации?

Для одного вектора два целых числа (с плавающей запятой / двойные числа) может быть?Может быть массив для одного вектора, где значения являются целыми числами (числами с плавающей запятой / двойными числами)?

Ответы [ 3 ]

8 голосов
/ 30 апреля 2011

Звучит так, как будто вы хотите три значения (возможно, удвоенные):

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 голос
/ 30 апреля 2011

Возможно commons-math OpenMapRealVector. Может быть полезным.

0 голосов
/ 01 мая 2011

Или вы можете использовать дженерики:

public interface MathVector<T extends Number>
{
    MathVector<T> add(MathVector<T> addend);
    T innerProduct();
    // Vectors have more than this, but it makes the point
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...