109 void createContactPartitions(
Shovel* shovel );
111 void setEnableCustomFrictionModels(
bool enable );
112 bool getEnableCustomFrictionModels() const;
114 agx::UInt getNumContactPatches()
const {
return m_partitionData.getNumPatches(); };
132 agxCollide::LocalGeometryContactVector& localContacts );
137 agxCollide::LocalGeometryContactVector& localContacts );
139 std::tuple<
agx::Real,
agx::Int> getContactPointAngle( const
agx::Vec3& midPoint,
140 const
agx::Vec3& zeroPoint,
141 const
agx::Vec3& contactPoint,
142 const
agx::Plane& polarPlane,
143 const
agx::Plane& cutTopPlane ) const;
147 void getShovelContactsAndContactRange(
Shovel* shovel,
148 const
agx::Vector<
agx::Plane>& shovelPlanes,
150 agxCollide::ParticleGeometryContactVector& contacts,
151 agxCollide::ParticleGeometryContactVector& rightWallContacts,
152 agxCollide::ParticleGeometryContactVector& leftWallContacts,
153 agx::RangeReal& range );
155 agxCollide::LocalParticleGeometryContactVector calculateShovelContactPoints(
Shovel* shovel,
156 const
agxCollide::ParticleGeometryContactVector& shovelContacts,
157 const
agx::RangeReal& range,
158 agx::Real& meanParticleArea ) const;
160 void calculateShovelSideWallContactPoints(
Shovel* shovel,
161 const
agx::Vector<
agx::Plane>& shovelPlanes,
164 agxCollide::ParticleGeometryContactVector& rightWallContacts,
165 agxCollide::ParticleGeometryContactVector& leftWallContacts );
168 ContactSpanData& contactSpanData,
169 const
agx::Physics::ParticleGeometryContactPtr& contact,
170 const
agx::Plane& middlePlane,
171 agx::Real contactAngle ) const;
173 agxCollide::LocalParticleGeometryContactVector constructShovelContacts(
Shovel* shovel,
174 agx::Vector<ContactPatch>& contactPatchData,
175 ContactSpanData& contactSpanData,
176 const
agx::Vec3f& separationNormal,
177 const
agx::Vec3& cuttingVector ) const;
179 agx::Real calculateContactArea( const
Shovel* shovel,
181 const
agxCollide::LocalParticleGeometryContactVector& contacts,
182 const
agx::Real meanParticleArea ) const;
193 agxCollide::LocalGeometryContactVector m_localGeometryContacts;
194 agxCollide::LocalGeometryContactVector m_localShovelAggregateContacts;
195 agx::ContactMaterialRef m_aggregateTerrainContactMaterial;
196 agx::ContactMaterialRef m_aggregateShovelContactMaterial;
199 bool m_enableCustomFrictionModels;
200 ContactPartitionData m_partitionData;
201 ContactPatchVector m_patchData;
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGXTERRAIN_EXPORT
Simulation is a class that bridges the collision space agxCollide::Space and the dynamic simulation s...
Shovel object used to interact with a terrain via an active zone that converts solid terrain to dynam...
A terrain model based a 3D grid model with overlapping height field that can be deformed by interacti...
Inheritance with partial specialization due to bug with ref_ptr containers.
This class is a combined container which has the find complexity of a HashTable, deterministic iterat...
Base class providing referencing counted objects.
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
This namespace consists of a set of classes for handling geometric intersection tests including boole...
The agxTerrain namespace contains a 3D model for a dynamic deformable Terrain and related classes.
agx::HashVector< agxCollide::Geometry *, agxCollide::LocalGeometryContact > GeometryLocalContactTable
agx::HashSet< agxCollide::Geometry * > GeometryHashSet
The agx namespace contains the dynamics/math part of the AGX Dynamics API.