ForwardKinematics.h

#pragma once


namespace Core
{
    ref class Link;

    typedef array< Robotics::Angle > Angles;
    typedef array< Link^ > Links;
    typedef System::Collections::Generic::List< Link^ > LinkList;


    /// 順運動学
    public ref class ForwardKinematics
    {
    // Operation -----------------------------------------------------------
    private:
        void CalculateToEnd( Link^ target );
        void CalculateToBody( Link^ target, Link^ lowerLink );

    // static
    public:
        static void CalculatePositionAndPostureOfLinks( Links^ links, Angles^ angles );
        static void CalculatePositionAndPostureOfLinks( Link^ targetLink );


    // Attribute ===========================================================
    private:
        LinkList^ m_routeOfLinks;   ///< リンクの経路


    // static
        literal double Tolerance = 1.0E-8;    ///< 許容誤差

    };
}