143 const agx::Vec2i& terrainIndex,
float compaction,
bool compressOccupancy =
false,
bool compressToBottom =
false);
208 const agx::Vec2i& terrainIndex,
float mass,
float compaction,
bool shouldAvalanche =
true);
413 agx::Vec3i convertSurfaceTerrainIndex(const
agx::Vec2i& terrainIndex) const;
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGXTERRAIN_STORE_RESTORE_INTERFACE
#define AGXTERRAIN_EXPORT
#define AGX_DECLARE_VECTOR_TYPES(type)
Interface class for accessing and manipulating the underlying 3D grid data in the terrain using terra...
agx::Real getSurfaceHardnessMultiplier(const agx::Vec2i &terrainIndex) const
Get the surface hardness multiplier, derived from hardness rate and local compaction,...
void setCompaction(const agx::Vec3i &terrainIndex, float compaction, bool compressOccupancy=false)
Set the compaction at an element given a specified 3D index where x,y are the regular terrain coordin...
bool isIndexValid(const agx::Vec3i &voxelIndex) const
Check is the given 3D index coordinate is within terrain bounds.
agx::Real getCurrentStressInTerrainIndex(const agx::Vec3i &terrainIndex) const
Get the current stress in a 3D index that resulted from active TerrainContacts this time-step.
agx::Real getSurfacePreconsolidationStress(const agx::Vec2i &terrainIndex) const
Get the surface pre-consolidation stress in the terrain grid element specified by a 3D terrain index.
float removeSolidOccupancyInColumn(const agx::Vec2i &terrainIndex, float occupancy, bool shouldAvalanche=true)
Remove solid occupancy in the specified surface coordinate.
void setTerrainMaterial(const agx::Vec2i &terrainIndex, int z, TerrainMaterial *terrainMaterial)
Set the terrainMaterial at an element given a specified surface index with a depth index.
agx::Real convertOccupancyToMassKg(float occupancy) const
Utility method used to convert solid occupancy to SI(Kg) units.
int getLowestAllowableDepthIndex() const
Get the lowest allowable depth index in the terrain.
TerrainGridControl(Terrain *terrain)
Construct given terrain instance.
void setTerrainMaterial(const agx::Vec3i &terrainIndex, TerrainMaterial *terrainMaterial)
Set the terrainMaterial at an element given a specified 3D index where x,y are the regular terrain co...
float getTotalMass(const agx::Vec3i &voxelIndex) const
Get the total mass (solid + fluid) in SI units at the specified 3D index coordinate.
bool applySurfaceStress(const agx::Vec2i &terrainIndex, agx::Real surfaceStress, agx::Real contactTime=-1)
Apply a surface stress (Pa) at the specified surface index in order to compact the soil.
bool applySurfaceForce(const agx::Vec2i &terrainIndex, agx::Real surfaceForce, agx::Real contactTime=-1)
Apply a surface force (N) at the specified surface index in order to compact the soil.
agx::Vec3 getGridElementPositionWorld(const agx::Vec3i &terrainIndex) const
Get the world center position of a terrain grid element given a specified 3D index.
float addSolidOccupancyLayerInColum(const agx::Vec2i &terrainIndex, agx::Real layerHeight, float compaction, bool shouldAvalanche=true)
Add solid occupancy layer with specific height and compaction on the terrain surface in the specified...
int findSurfaceIndex(const agx::Vec2i &terrainIndex) const
Find surface depth index given the terrain index x,y coordinates.
float getCompaction(const agx::Vec3i &terrainIndex) const
Get compaction the specified 3D index coordinate.
float getSurfaceCompaction(const agx::Vec2i &terrainIndex) const
Get compaction at the surface element given a specified surface index.
agx::Real getLocalPreconsolidationStress(const agx::Vec3i &terrainIndex) const
Get the local pre-consolidation stress in the terrain grid element specified by a 3D terrain index.
float removeFluidOccupancy(const agx::Vec3i &terrainIndex, float fluidOccupancy)
Remove fluid occupancy in the specified 3D grid coordinate, if any exists.
float getOccupancy(const agx::Vec2i &terrainIndex, int z) const
Get solid occupancy at the specified surface index with a depth index.
void addSolidOccupancyInColumns(agx::HashTable< agx::Vec2i, std::pair< float, float > > table, bool shouldAvalanche=true)
Add solid occupancy in several terrain coordinates on the surface with given compaction.
float getSurfaceOccupancy(const agx::Vec2i &terrainIndex) const
Get solid occupancy at the surface grid element given a surface index.
agx::Real convertFluidMassKgToOccupancy(float mass) const
Utility method used to convert mass (kg) to occupancy.
agx::Real getLocalHardnessMultiplier(const agx::Vec3i &voxelIndex) const
Get the local hardness multiplier, derived from hardness rate and local compaction,...
agx::Real getLocalAngleOfRepose(const agx::Vec3i &voxelIndex) const
Get local angle of repose in the specified 3D index.
float getOccupancy(const agx::Vec3i &voxelIndex) const
Get the solid occupancy at the specified 3D index coordinate.
float getMass(const agx::Vec2i &terrainIndex, int z) const
Get solid mass in SI units at the specified surface index with a depth index.
void setSurfaceCompaction(const agx::Vec2i &terrainIndex, float compaction, bool compressOccupancy=false, bool compressToBottom=false)
Set the compaction at the surface element given a specified surface index.
float addSolidOccupancyInColumn(const agx::Vec2i &terrainIndex, float mass, float compaction, bool shouldAvalanche=true)
Add solid occupancy in the specified terrain coordinate on the surface with given compaction.
float getMass(const agx::Vec3i &voxelIndex) const
Get the solid mass in SI units at the specified 3D index coordinate.
void setCompaction(const agx::Vec2i &terrainIndex, int z, float compaction, bool compressOccupancy=false)
Set the compaction at an element given a specified surface index with a depth index.
agx::Real getSurfaceAngleOfRepose(const agx::Vec2i &terrainIndex) const
Get surface angle of repose in the 2D terrain index.
int findIndexFromSurfaceDepth(const agx::Vec2i &terrainIndex, agx::Real depth) const
Find the depth index under the surface at terrain index x,y coordinates and depth distance.
float getCompaction(const agx::Vec2i &terrainIndex, int z) const
Get compaction at the specified surface index coordinate with a depth index.
float addSolidOccupancyInColumnToHeight(const agx::Vec2i &terrainIndex, agx::Real height, float compaction, bool shouldAvalanche=true)
Add solid occupancy in the specified terrain coordinate on the surface with given compaction up to a ...
void setSurfaceCompactionToDepth(const agx::Vec2i &terrainIndex, float compaction, float depth)
Set the compaction at the surface element given a specified surface index.
This class is used to describe the general material properties of the Terrain.
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.
Base class providing referencing counted objects.
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
The agxTerrain namespace contains a 3D model for a dynamic deformable Terrain and related classes.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.