java怎么定义向量类啊
我们需要定义一个向量类,包含以下基本属性和方法:
(图片来源网络,侵删)
1、私有属性:存储向量的坐标值;
2、构造方法:用于初始化向量;
3、getX()、getY()、getZ()方法:用于获取向量的各个坐标值;
4、setX(double x)、setY(double y)、setZ(double z)方法:用于设置向量的各个坐标值;
5、add(Vector v)方法:用于向量相加;
6、subtract(Vector v)方法:用于向量相减;
7、dotProduct(Vector v)方法:用于计算两个向量的点积;
8、crossProduct(Vector v)方法:用于计算两个向量的叉积;
9、magnitude()方法:用于计算向量的模长;
10、normalize()方法:用于对向量进行单位化处理。
下面是一个简单的向量类实现:
public class Vector { private double x; private double y; private double z; // 构造方法 public Vector(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } // 获取x坐标值 public double getX() { return x; } // 获取y坐标值 public double getY() { return y; } // 获取z坐标值 public double getZ() { return z; } // 设置x坐标值 public void setX(double x) { this.x = x; } // 设置y坐标值 public void setY(double y) { this.y = y; } // 设置z坐标值 public void setZ(double z) { this.z = z; } // 向量相加 public Vector add(Vector v) { return new Vector(this.x + v.x, this.y + v.y, this.z + v.z); } // 向量相减 public Vector subtract(Vector v) { return new Vector(this.x v.x, this.y v.y, this.z v.z); } // 计算两个向量的点积 public double dotProduct(Vector v) { return this.x * v.x + this.y * v.y + this.z * v.z; } // 计算两个向量的叉积 public Vector crossProduct(Vector v) { return new Vector(this.y * v.z this.z * v.y, this.z * v.x this.x * v.z, this.x * v.y this.y * v.x); } // 计算向量的模长 public double magnitude() { return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); } // 对向量进行单位化处理 public Vector normalize() { double mag = magnitude(); return new Vector(this.x / mag, this.y / mag, this.z / mag); } }
接下来,我们可以编写一个简单的测试类来验证我们的向量类是否能够正常工作:
public class TestVector { public static void main(String[] args) { Vector v1 = new Vector(1, 2, 3); Vector v2 = new Vector(4, 5, 6); Vector v3 = new Vector(7, 8, 9); Vector v4 = new Vector(10, 11, 12); Vector v5 = new Vector(13, 14, 15); Vector v6 = new Vector(16, 17, 18); Vector v7 = new Vector(19, 20, 21); Vector v8 = new Vector(22, 23, 24); Vector v9 = new Vector(25, 26, 27); Vector v10 = new Vector(28, 29, 30); Vector v11 = new Vector(31, 32, 33); Vector v12 = new Vector(34, 35, 36); Vector v13 = new Vector(37, 38, 39); Vector v14 = new Vector(40, 41, 42); Vector v15 = new Vector(43, 44, 45); Vector v16 = new Vector(46, 47, 48); Vector v17 = new Vector(49, 50, 51); Vector v18 = new Vector(52, 53, 54); Vector v19 = new Vector(55, 56, 57); Vector v20 = new Vector(58, 59, 60); Vector v21 = new Vector(61, 62, 63); Vector v22 = new Vector(64, 65, 66); Vector v23 = new Vector(67, 68, 69); Vector v24 = new Vector(70, 71, 72); Vector v25 = new Vector(73, 74, 75); Vector v26 = new Vector(76, 77, 78); Vector v27 = new Vector(79, 80, 81); Vector v28 = new Vector(82, 83, 84); Vector v29 = new Vector(85, 86, 87); Vector v30 = new Vector(88, 89, 90); Vector v31 = new Vector(91, 92, 93); Vector v32 = new Vector(94, 95, 96); Vector v33 = new Vector(97, 98,