编写小型Java 3d矢量类的最佳方法

时间:2013-12-16 21:20:36

标签: java math vector

您好我正在开发一个小项目,我必须添加一个类,允许我将2个向量相加/减去它们。 Vector例如是Vector(x,y,z)

编码它的最佳方法是什么?我不想使用互联网上的课程,因为我认为我需要的功能非常基础。

这里有一些我正在考虑的伪代码: Vector(x,y,z)是一个数组,[0] = x,[1] = y [2] = z 所以如果我们有Vector1(x1,y1,z1)和Vector 2(x2,y2,z2),我们只需要一个3d数组,基本上包含[0] = x1 + x2 [1] = y1 + y2和[2] = Z1 + Z2 这是正确的方法吗?

2 个答案:

答案 0 :(得分:2)

如果你的向量总是在三维中,我不会使用数组,它可能会使事情变得不那么清晰。尝试这样的事情:

public class Vector {
  private final double x;
  private final double y;
  private final double z;

  public Vector(double x, double y, double z) {
    this.x = x;
    this.y = y;
    this.z = z;
  }

  // Getters...

  public Vector add(Vector addend) {
    return new Vector(x + addend.x, y + addend.y, z + addend.z);
  }

  // Other operations...
}

通常最好创建字段final,因此您确定您的数据不会令人惊讶地更改值,因为您不小心与代码的其他部分共享了引用。

答案 1 :(得分:2)

将每个组件存储为变量。没有必要使用数组。我只想写一些简单的东西:

public class Vector3 {

    double x, y, z; // package-private variables; nice encapsulation if you place this in a maths package of something

    Vector3(double x, double y, double z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public Vector3 add(Vector3 vector) {
        x += vector.x;
        y += vector.y;
        z += vector.z;
        return this; // method chaining would be very useful
    }

}