00001 #ifndef ows_h___ 00002 #define ows_h___ 00003 00004 #include "utilities.h" 00005 #include "target_object.h" 00006 #include "limit_surface.h" 00007 #include <string> 00008 #include <iostream> 00009 00010 namespace ICR 00011 { 00012 //-------------------------------------------------------------------- 00013 //-------------------------------------------------------------------- 00017 class OWS 00018 { 00019 private: 00020 00021 WrenchConeList wrench_cones_; 00022 std::string parent_obj_name_; 00023 bool initialized_; 00024 bool div_by_lambda_; 00025 LimitSurface lim_surf_; 00026 double lambda_; 00027 uint num_wc_; 00033 void addWrenchCone(uint id,Eigen::Vector3d const* const cp_vtx, Eigen::Vector3d const* const cp_vtx_normal); 00034 void updateLambda(Eigen::Vector3d const* const cp_vtx); 00035 00036 public: 00037 00038 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 00039 00040 OWS(); 00041 OWS(OWS const& src); 00042 OWS& operator=(OWS const& src); 00043 friend std::ostream& operator<<(std::ostream& stream, OWS const& ows); 00044 ~OWS(); 00045 00046 void init(TargetObject const& obj,LimitSurface const& lim_surf); 00047 uint getNumWrenchCones() const; 00048 WrenchCone const* getWrenchCone(uint id) const; 00049 LimitSurface const* getLimitSurface() const; 00050 void scale(double scale); 00051 void divideByLambda(); 00052 std::string getParentObjectName()const; 00053 }; 00054 //-------------------------------------------------------------------- 00055 //-------------------------------------------------------------------- 00056 }//namespace ICR 00057 #endif