/** * Locally applies this transform to the given point: P' = M*P+T * * @param point * @return the transformed point. * @throws NullPointerException if point is null. */ public CCVector3 applyForward(CCVector3 point, CCVector3 theStore) { if (point == null) { throw new NullPointerException(); } if (theStore == null) theStore = new CCVector3(); if (_myIsIdentity) { // No need to make changes // Y = X theStore.set(point); return theStore; } if (_myIsRotationMatrix) { // Scale is separate from matrix // Y = R*S*X + T theStore.set(point.x * _myScale.x, point.y * _myScale.y, point.z * _myScale.z); _myMatrix.applyPost(theStore, theStore); theStore.addLocal(_myTranslation); return theStore; } // scale is part of matrix. // Y = M*X + T _myMatrix.applyPost(point, theStore); theStore.addLocal(_myTranslation); return theStore; }
/** * Locally adds to the translation of this transform. * * @param vec * @return this transform for chaining. */ public CCTransform translate(final CCVector3 vec) { _myTranslation.addLocal(vec); _myIsIdentity = _myIsIdentity && _myTranslation.equals(CCVector3.ZERO); return this; }
/** * Locally adds to the translation of this transform. * * @param x * @param y * @param z * @return this transform for chaining. */ public CCTransform translate(final double x, final double y, final double z) { _myTranslation.addLocal(x, y, z); _myIsIdentity = _myIsIdentity && _myTranslation.equals(CCVector3.ZERO); return this; }