public class Vec3f extends Tuple3f { public Vec3f() { super(); } public Vec3f(float x, float y, float z) { super(x, y, z); } public Vec3f(Vec3f v) { x = v.x; y = v.y; z = v.z; } public void normalize() { float len = x*x + y*y + z*z; len = 1.0F/(float)Math.sqrt(len); x *= len; y *= len; z *= len; } public final void add(Tuple3f t1) { super.add(t1); normalize(); } public static final Vec3f add(Vec3f t1, Vec3f t2) { Vec3f t = new Vec3f(t1); t.add(t2); t.println("Local add"); return t; } public static final Tuple3f sub(Vec3f t1, Vec3f t2) { Vec3f t = new Vec3f(t1); t.sub(t2); return t; } public final void sub(Tuple3f t1) { super.sub(t1); normalize(); } public static void main(String argv[]) { Vec3f t1 = new Vec3f (2.1F, 3.4F, 2.2F); Vec3f t2 = new Vec3f (); t2.add(t1); t1.println("t1: "); t2.println("t2: "); Tuple3f tu0 = add((Tuple3f) t1, (Tuple3f)t2); tu0.println("tu0: "); t1.println("t1: "); t2.println("t2: "); Vec3f t = add(t1, t2); t.println("t: "); } }