Example #1
0
 ShapeEllipsoid::ShapeEllipsoid(Vector3d _dim, double _mass)
 	: Shape(P_ELLIPSOID, _mass)
 {
 	mDim = _dim;
 	initMeshes();
 	if (mDim != Vector3d::Zero())
 		computeVolume();
 	if (mMass != 0){
 		mInertia = computeInertia(mMass);
 	}
 }
Example #2
0
 ShapeMesh::ShapeMesh(Vector3d _dim, const aiScene *_mesh)
 	: Shape(P_MESH, 0),
 	  mMesh(_mesh),
 	  mDisplayList(0)
 {
 	mDim = _dim;
     initMeshes();
     if (mDim != Vector3d::Zero())
         computeVolume();
     if (mMass != 0){
         mInertia = computeInertia(mMass);
     }
 }
Example #3
0
RigidBody::RigidBody(const se3& Pose_, const std::string& name_, int id_, ShapeType shtype, bool isActive_) : ISimulationObject(name_,id_,isActive_), IMoveable(Pose_), userForce( Mat<float>((float)0,3,1) ), userTorque(Mat<float>((float)0,3,1)), isFixed(false), canCollide(true), mass(1.0f), imass(1.0f), Inertia(Identity3), iInertia(Identity3),isRobot(false)
{	

	if(shtype == BOX)
	{
		//ptrShape = std::unique_ptr<IShape>(new BoxShape(this));
		ptrShape = new BoxShape(this);
		computeInertia();
	}
	else
	{
		//ptrShape = std::unique_ptr<IShape>(new SphereShape(this));
		ptrShape = new SphereShape(this);
	}
	
	type = TSORigidBody;
}
Example #4
0
//==============================================================================
Eigen::Matrix3d EllipsoidShape::computeInertia(double mass) const
{
  return computeInertia(mSize, mass);
}
Example #5
0
//==============================================================================
Eigen::Matrix3d CylinderShape::computeInertia(double mass) const
{
  return computeInertia(mRadius, mHeight, mass);
}
Example #6
0
 void Shape::setMass(double _m) {
     mMass = _m;
     mInertia = computeInertia(mMass);
 }
Example #7
0
 void Shape::setDim(const Eigen::Vector3d& _dim) {
     mDim = _dim;
     computeVolume();
     mInertia = computeInertia(mMass);
 }
Example #8
0
//==============================================================================
Eigen::Matrix3d SphereShape::computeInertia(double mass) const
{
    return computeInertia(mRadius, mass);
}