/** * Normalizes this vector to have unit length; makes this a unit vector. * @return this vector, normalized. */ public Vector3 normalizeEquals() { double d = length(); double s = (d>0.0)?1.0/d:1.0; x *= s; y *= s; z *= s; return this; }
public void testVector() { int ntrial = 10; for (int itrial=0; itrial<ntrial; ++itrial) { Vector3 u = randomVector3(); Vector3 v = randomVector3(); Vector3 vc = new Vector3(v); assertEquals(v,v.negate().negate()); assertEquals(v,vc.negateEquals().negateEquals()); assertEquals(1.0,v.normalize().length()); assertEquals(1.0,vc.normalizeEquals().length()); assertEquals(1.0,v.normalize().lengthSquared()); assertEquals(v.dot(v),v.lengthSquared()); assertEquals(0.0,u.cross(v).dot(u)); assertEquals(0.0,u.cross(v).dot(v)); } }
/** * Returns the unit vector with the same direction as this vector. * @return the unit vector. */ public Vector3 normalize() { double d = length(); double s = (d>0.0)?1.0/d:1.0; return new Vector3(x*s,y*s,z*s); }
public void testPoint() { int ntrial = 10; for (int itrial=0; itrial<ntrial; ++itrial) { Point3 p = randomPoint3(); Point3 pc = new Point3(p); Vector3 v = randomVector3(); assertEquals(p,p.plus(v).minus(v)); assertEquals(p,pc.plusEquals(v).minusEquals(v)); Point3 q = p.minus(v); assertEquals(q.distanceTo(p),v.length()); } }