double angle(Vector3D o) { Vector3D cross = .vec3( y*o.z - z*o.y, z*o.x - x*o.z, x*o.y - y*o.x ); return math.atan2(cross.length, dotProduct(o)); }