#pragma once #include #include "SPosition2D.h" struct SCalculateResult { SCalculateResult() { Reset(); } void Reset() { dStraightLineA = 0.; dStraightLineB = 0.; dOrthogonalLineA = 0.; dOrthogonalLineB = 0.; dStraghtValue = 0.; dOrthogonalValue = 0.; dOrthogonalTheta = 0.; } double dStraightLineA; double dStraightLineB; double dOrthogonalLineA; double dOrthogonalLineB; double dStraghtValue; double dOrthogonalValue; double dOrthogonalTheta; }; typedef std::vector VectorCalculateResult; typedef std::vector::iterator VectorCalculateResultIt; typedef std::vector::const_iterator constVectorCalculateResultIt; typedef std::vector VectorDouble; typedef std::vector::iterator VectorDoubleIt; typedef std::vector::const_iterator constVectorDoubleIt; class AFX_EXT_CLASS CMotorCalculator { public: CMotorCalculator(int nIndex=-1); virtual ~CMotorCalculator(void); void Reset(); void SetDesignPosition(const VectorDouble& vectorPosX, const VectorDouble& vectorPosY); void SetDesignPosition(const VectorPosition2D& vectorDesignPos) { m_vectorDesignPos = vectorDesignPos; } void SetMotorPosition(const VectorDouble& vectorPosX, const VectorDouble& vectorPosY); void SetMotorPosition(const VectorPosition2D& vectorMotorPos) { m_vectorMotorPos = vectorMotorPos; } const VectorPosition2D* GetDesignPosition() { return &m_vectorDesignPos; } const VectorPosition2D* GetMotorPosition() { return &m_vectorMotorPos; } const SCalculateResult* GetCalculateResult() { return &m_sCalculateResult; } int CalculateResult(); protected: int m_nIndex; VectorPosition2D m_vectorDesignPos; VectorPosition2D m_vectorMotorPos; SCalculateResult m_sCalculateResult; };