您好我正在开发一个小项目,我必须添加一个类,允许我将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 这是正确的方法吗?
答案 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
}
}