// technically not required as vectors have the same information as points, but it's useful to have separate vector and point things.. import java.util.Vector; public class Vector3D { public double x; public double y; public double z; public Vector3D(double _x, double _y, double _z){ x = _x; y = _y; z = _z; } public void createFrom2Points(Point3D start, Point3D end){ x = end.x - start.x; y = end.y - start.y; z = end.z - start.z; } public double getLength(){ return Math.sqrt(x*x + y*y + z*z); } public double angleTo(Vector3D vec2){ return Math.acos( (x*vec2.x + y*vec2.y + z*vec2.z) /( //----------------------------------------------------------- Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2)) * Math.sqrt(Math.pow(vec2.x, 2) + Math.pow(vec2.y, 2) + Math.pow(vec2.z, 2)))); } public Vector3D cross(Vector3D vec2){ return new Vector3D( y*vec2.z - z*vec2.y, z*vec2.x - x*vec2.z, x*vec2.y - y*vec2.x); } public double dot(Vector3D vec2){ return x*vec2.x + y* vec2.y+z* vec2.z; } }