/// <summary>
        ///   Executes the transform calculations (T = Z*X).
        /// </summary>
        /// 
        /// <returns>Transform matrix T.</returns>
        /// 
        /// <remarks>Calling this method also updates the Transform property.</remarks>
        /// 
        public void Compute(DenavitHartenbergParameters parameters)
        {
            // Calculate Z with Z = TranslationZ(d).RotationZ(theta)
            Z = Matrix4x4.Multiply
            (
                Matrix4x4.CreateTranslation(new Vector3(0f, 0f, (float)parameters.Offset)),
                Matrix4x4.CreateRotationZ((float)parameters.Theta)
            );

            // Calculate X with X = TranslationX(radius).RotationZ(alpha)
            X = Matrix4x4.Multiply
            (
                Matrix4x4.CreateTranslation(new Vector3((float)parameters.Radius, 0f, 0f)),
                Matrix4x4.CreateRotationX((float)parameters.Alpha)
            );

            // Calculate the transform with T=Z.X
            Transform = Matrix4x4.Multiply(Z, X);
        }
 /// <summary>
 ///   Adds an object to the end of this <see cref="DenavitHartenbergJointCollection"/>.
 /// </summary>
 ///
 /// <param name="parameters">The <see cref="DenavitHartenbergParameters">
 ///   parameters</see> specifying the joint to be added.</param>
 ///
 public void Add(DenavitHartenbergParameters parameters)
 {
     Add(parameters);
 }
Ejemplo n.º 3
0
 /// <summary>
 ///   Initializes a new instance of the <see cref="DenavitHartenbergJoint"/> class.
 /// </summary>
 ///
 /// <param name="parameters">The <see cref="DenavitHartenbergParameters">
 /// parameters </see> to be used to create the joint.</param>
 ///
 public DenavitHartenbergJoint(DenavitHartenbergParameters parameters)
 {
     Matrix     = new DenavitHartenbergMatrix();
     Position   = new Vector3(0, 0, 0);
     Parameters = parameters;
 }