119 template<
typename Real>
160 template<
typename Real>
192 this->
r1 = rotMat1.inverse() * (anchor_point - this->
actor1->center);
193 this->
r2 = rotMat2.inverse() * (anchor_point - this->
actor2->center);
203 template<
typename Real>
234 this->
r1 = rotMat1.inverse() * (anchor_point - this->
actor1->center);
238 this->
r2 = rotMat2.inverse() * (anchor_point - this->
actor2->center);
250 this->
sliderAxis = rotMat1.transpose() * axis;
284 template<
typename Real>
316 this->
r1 = rotMat1.inverse() * (anchor_point - this->
actor1->center);
317 this->
r2 = rotMat2.inverse() * (anchor_point - this->
actor2->center);
330 this->
d_min = theta_min;
331 this->
d_max = theta_max;
358 template<
typename Real>
401 this->
r1 = rotMat1.inverse() * (anchor_point - this->
actor1->center);
402 this->
w = anchor_point;
406 this->
r2 = rotMat2.inverse() * (anchor_point - this->
actor2->center);
427 template<
typename Real>
463 template<
typename Real>
505 template<
typename TDataType>
510 typedef typename TDataType::Real
Real;
511 typedef typename TDataType::Coord
Coord;
512 typedef typename TDataType::Matrix
Matrix;
515 typedef typename ::dyno::TOrientedBox3D<Real>
Box3D;
516 typedef typename ::dyno::TTet3D<Real>
Tet3D;
#define DECLARE_TCLASS(name, T1)
CPU_FUNC BallAndSocketJoint(PdActor *a1, PdActor *a2)
DYN_FUNC BallAndSocketJoint()
void setAnchorPoint(Vector< Real, 3 >anchor_point)
void setRotation(const DArray< Matrix > &rot)
::dyno::FixedJoint< Real > FixedJoint
DArray< Pair< uint, uint > > & shape2RigidBodyMapping()
DArray< Box3D > mBoxesInLocal
DArray< Box3D > mBoxInGlobal
void requestCapsuleInGlobal(DArray< Capsule3D > &capInGlobal)
DArray< Matrix > & rotation()
void requestTriangleInGlobal(DArray< Triangle3D > &triInGlobal)
DArray< BallAndSocketJoint > & ballAndSocketJoints()
::dyno::TOrientedBox3D< Real > Box3D
::dyno::HingeJoint< Real > HingeJoint
void requestSphereInGlobal(DArray< Sphere3D > &sphereInGlobal)
::dyno::BallAndSocketJoint< Real > BallAndSocketJoint
DArray< Coord > & position()
void copyFrom(DiscreteElements< TDataType > &de)
void setTets(DArray< Tet3D > &tets)
DArray< BallAndSocketJoint > mBallAndSocketJoints
DArray< Sphere3D > mSphereInGlobal
void requestTetInGlobal(DArray< Tet3D > &tetInGlobal)
DArray< Sphere3D > mSpheresInLocal
DArray< Tet3D > & tetsInLocal()
void setTetElementId(DArray< TopologyModule::Tetrahedron > &element_id)
DArray< Capsule3D > & capsulesInLocal()
ElementOffset calculateElementOffset()
void requestDiscreteElementsInGlobal(DArray< Box3D > &boxInGlobal, DArray< Sphere3D > &sphereInGlobal, DArray< Tet3D > &tetInGlobal, DArray< Capsule3D > &capInGlobal, DArray< Triangle3D > &triInGlobal)
DArray< Tet3D > & tetsInGlobal()
DArray< TopologyModule::Tetrahedron > m_tet_element_id
DArray< Triangle3D > & trianglesInGlobal()
void setTriangles(DArray< Triangle3D > &triangles)
void setTetBodyId(DArray< int > &body_id)
DArray< Sphere3D > & spheresInLocal()
void setCapsules(DArray< Capsule3D > &capsules)
DArray< FixedJoint > & fixedJoints()
DArray< Triangle3D > & trianglesInLocal()
void merge(CArray< std::shared_ptr< DiscreteElements< TDataType > > > &topos)
DArray< Pair< uint, uint > > mShape2RigidBody
DArray< Matrix > mRotation
DArray< PointJoint > & pointJoints()
DArray< Triangle3D > mTriangleInGlobal
void setBoxes(DArray< Box3D > &boxes)
DArray< Tet3D > mTetsInLocal
DArray< Triangle3D > mTrianglesInLocal
DArray< TopologyModule::Tetrahedron > & getTetElementMapping()
void setPosition(const DArray< Coord > &pos)
DArray< PointJoint > mPointJoints
DArray< DistanceJoint > & distanceJoints()
DArray< FixedJoint > mFixedJoints
DArray< SliderJoint > mSliderJoints
void requestBoxInGlobal(DArray< Box3D > &boxInGlobal)
DArray< Capsule3D > mCapsulesInLocal
DArray< int > & getTetBodyMapping()
DArray< HingeJoint > mHingeJoints
DArray< Capsule3D > & capsulesInGlobal()
void updateTopology() override
void setTetSDF(DArray< Real > &sdf)
DArray< Tet3D > mTetInGlobal
DArray< Capsule3D > mCapsuleInGlobal
::dyno::DistanceJoint< Real > DistanceJoint
DArray< int > m_tet_body_mapping
DArray< Coord > mPosition
DArray< Sphere3D > & spheresInGlobal()
::dyno::TSphere3D< Real > Sphere3D
DArray< Box3D > & boxesInGlobal()
DArray< SliderJoint > & sliderJoints()
DArray< Real > & getTetSDF()
DArray< Box3D > & boxesInLocal()
DArray< HingeJoint > & hingeJoints()
void setSpheres(DArray< Sphere3D > &spheres)
DArray< DistanceJoint > mDistanceJoints
::dyno::SliderJoint< Real > SliderJoint
::dyno::PointJoint< Real > PointJoint
~DiscreteElements() override
::dyno::TTet3D< Real > Tet3D
void setDistanceJoint(Vector< Real, 3 > r1, Vector< Real, 3 > r2, Real distance)
DistanceJoint(PdActor *a1, PdActor *a2)
void setAnchorPoint(Vector< Real, 3 >anchor_point)
void setAnchorAngle(Quat< Real > quat)
CPU_FUNC FixedJoint(PdActor *a1, PdActor *a2)
CPU_FUNC FixedJoint(PdActor *a1)
void setMoter(Real v_moter)
void setRange(Real theta_min, Real theta_max)
Vector< Real, 3 > hingeAxisBody2
Vector< Real, 3 > hingeAxisBody1
void setAxis(Vector< Real, 3 > axis)
void setAnchorPoint(Vector< Real, 3 >anchor_point)
CPU_FUNC HingeJoint(PdActor *a1, PdActor *a2)
CPU_FUNC Joint(PdActor *a1, PdActor *a2)
void setAnchorPoint(Vector< Real, 3 > point)
Vector< Real, 3 > anchorPoint
void setAnchorPoint(Vector< Real, 3 >anchor_point)
CPU_FUNC SliderJoint(PdActor *a1, PdActor *a2)
void setRange(Real d_min, Real d_max)
Vector< Real, 3 > sliderAxis
void setMoter(Real v_moter)
void setAxis(Vector< Real, 3 > axis)
This is an implementation of AdditiveCCD based on peridyno.
SquareMatrix< float, 3 > Mat3f
Array< T, DeviceType::GPU > DArray
Array< T, DeviceType::CPU > CArray
DYN_FUNC void setTriangleRange(uint startIndex, uint endIndex)
DYN_FUNC void setSphereRange(uint startIndex, uint endIndex)
DYN_FUNC ElementType checkElementType(uint id)
DYN_FUNC uint sphereIndex()
DYN_FUNC void setCapsuleRange(uint startIndex, uint endIndex)
DYN_FUNC void setTetRange(uint startIndex, uint endIndex)
DYN_FUNC uint checkElementOffset(ElementType eleType)
DYN_FUNC uint capsuleIndex()
DYN_FUNC uint triangleIndex()
DYN_FUNC void setBoxRange(uint startIndex, uint endIndex)