00001 #ifndef HISPIDARCALC3DOF_H 00002 #define HISPIDARCALC3DOF_H 00003 00004 #include "HISpidarCalcBase.h" 00005 namespace Spr{; 00006 00007 /** エンドエフェクタ(グリップ)が並進3自由度だけを持つSPIDAR用の計算クラス. 00008 糸の数は可変. */ 00009 class HISpidarCalc3Dof: public HISpidarCalcBase{ 00010 protected: 00011 Vec3f pos; ///< グリップの位置 00012 int nRepeat; ///< 繰り返し回数 00013 std::vector<Vec3f> wireDirection; ///< ワイヤ方向単位ベクトル(並進) 00014 00015 float sigma; ///< 係数行列の対角成分に加える 00016 public: 00017 HISpidarCalc3Dof(); 00018 virtual ~HISpidarCalc3Dof(); 00019 void Init(int dof, const VVector<float>& minF, const VVector<float>& maxF); 00020 00021 virtual void Update(); ///< 姿勢情報の更新 00022 virtual void SetForce(const Vec3f&); ///< 提示力の設定(並進力) 00023 virtual void SetForce(const Vec3f&, const Vec3f&); ///< 提示力の設定(並進.回転力は提示しない) 00024 Vec3f trnForce; /// 並進力 00025 float smooth; /// 二次形式 張力の2乗項の係数 00026 float lambda_t; /// 二次形式 並進項の係数 00027 }; 00028 00029 } // namespace Spr 00030 00031 #endif