Example #1
0
        /// <summary>
        /// calcultes new translation when combining translations
        ///
        /// Rt = Ra Rb
        /// Ct = Cb
        /// Tt = Ra (Cb + Tb - Ca) + Ca + Ta - Cb
        ///
        /// for theory:
        /// http://www.euclideanspace.com/maths/geometry/rotations/rotationAndTranslation/nonMatrix/index.htm
        /// </summary>
        /// <param name="ta">Ta = translation of transform a in absolute    coordinates</param>
        /// <param name="ra">Ra = rotation function of transform a in    absolute coordinates</param>
        /// <param name="ca">Ca = centre of rotation of transform a    in absolute coordinates</param>
        /// <param name="tb">Tb = translation of transform b in coordinates    of transform a</param>
        /// <param name="cb">Cb = centre of rotation of transform b    in coordinates of transform a</param>
        /// <returns>Tt total offset</returns>
        public vector3D rotationOffset(vector3D ta, classRotation ra, vector3D ca, vector3D tb, vector3D cb)
        {
            vector3D result = new vector3D(cb);

            result.add(tb);
            result.sub(ca);
            if (ra != null)
            {
                ra.transform(result);
            }
            result.add(ca);
            result.add(ta);
            result.sub(cb);
            return(result);
        }
Example #2
0
 /// <summary>
 /// calcultes new translation when combining translations
 /// 
 /// Rt = Ra Rb
 /// Ct = Cb
 /// Tt = Ra (Cb + Tb - Ca) + Ca + Ta - Cb
 /// 
 /// for theory:
 /// http://www.euclideanspace.com/maths/geometry/rotations/rotationAndTranslation/nonMatrix/index.htm
 /// </summary>
 /// <param name="ta">Ta = translation of transform a in absolute    coordinates</param>
 /// <param name="ra">Ra = rotation function of transform a in    absolute coordinates</param>
 /// <param name="ca">Ca = centre of rotation of transform a    in absolute coordinates</param>
 /// <param name="tb">Tb = translation of transform b in coordinates    of transform a</param>
 /// <param name="cb">Cb = centre of rotation of transform b    in coordinates of transform a</param>
 /// <returns>Tt total offset</returns>
 public vector3D rotationOffset(vector3D ta, classRotation ra, vector3D ca, vector3D tb, vector3D cb)
 {
     vector3D result = new vector3D(cb);
     result.add(tb);
     result.sub(ca);
     if (ra != null) ra.transform(result);
     result.add(ca);
     result.add(ta);
     result.sub(cb);
     return result;
 }