void System::MakeSphere(ChSharedBodyPtr &body, double radius, double mass,ChVector<> pos,double sfric,double kfric,double restitution,bool collide){ body.get_ptr()->SetMass(mass); body.get_ptr()->SetPos(pos); body.get_ptr()->SetInertiaXX(ChVector<>(2.0/5.0*mass*radius*radius,2.0/5.0*mass*radius*radius,2.0/5.0*mass*radius*radius)); body.get_ptr()->GetCollisionModel()->ClearModel(); if(mGPUSys){(ChCollisionModelGPU *)(body.get_ptr()->GetCollisionModel())->AddSphere(mSphereRadius);} else{body.get_ptr()->GetCollisionModel()->AddSphere(radius);} body.get_ptr()->GetCollisionModel()->BuildModel(); body.get_ptr()->SetCollide(collide); body.get_ptr()->SetImpactC(0); body.get_ptr()->SetSfriction(sfric); body.get_ptr()->SetKfriction(kfric); mSystem->AddBody(body); }
void System::MakeBox(ChSharedBodyPtr &body, ChVector<> dim, double mass,ChVector<> pos, ChQuaternion<> rot,double sfric,double kfric,double restitution,int family,int nocolwith,bool collide, bool fixed){ body.get_ptr()->SetMass(mass); body.get_ptr()->SetPos(pos); body.get_ptr()->SetRot(rot); body.get_ptr()->SetInertiaXX(ChVector<>(1/12.0*mass*(dim.y*dim.y+dim.z*dim.z),1/12.0*mass*(dim.x*dim.x+dim.z*dim.z),1/12.0*mass*(dim.x*dim.x+dim.y*dim.y))); body.get_ptr()->GetCollisionModel()->ClearModel(); (ChCollisionModelGPU *)(body.get_ptr()->GetCollisionModel())->AddBox(dim.x,dim.y,dim.z); body.get_ptr()->GetCollisionModel()->BuildModel(); body.get_ptr()->SetCollide(collide); body.get_ptr()->SetBodyFixed(fixed); body.get_ptr()->SetImpactC(0.); body.get_ptr()->SetSfriction(sfric); body.get_ptr()->SetKfriction(kfric); mSystem->AddBody(body); (body.get_ptr()->GetCollisionModel())->SetFamily(family); (body.get_ptr()->GetCollisionModel())->SetFamilyMaskNoCollisionWithFamily(nocolwith); }
void System::MakeEllipsoid(ChSharedBodyPtr &body, ChVector<> radius, double mass,ChVector<> pos, ChQuaternion<> rot,double sfric,double kfric,double restitution,bool collide){ body.get_ptr()->SetMass(mass); body.get_ptr()->SetPos(pos); body.get_ptr()->SetRot(rot); body.get_ptr()->GetCollisionModel()->ClearModel(); if(mGPUSys){(ChCollisionModelGPU *)(body.get_ptr()->GetCollisionModel())->AddEllipsoid(radius.x,radius.y,radius.z);} else{body.get_ptr()->GetCollisionModel()->AddEllipsoid(radius.x,radius.y,radius.z);} body.get_ptr()->GetCollisionModel()->BuildModel(); body.get_ptr()->SetCollide(collide); body.get_ptr()->SetImpactC(0); body.get_ptr()->SetSfriction(sfric); body.get_ptr()->SetKfriction(kfric); mSystem->AddBody(body); }