Skip to content

Commit

Permalink
Updated GetMeshTriangle() function to scale the mesh coordinates
Browse files Browse the repository at this point in the history
Signed-off-by: Jasmeet Singh <jasmeet0915@gmail.com>
  • Loading branch information
jasmeet0915 committed Sep 25, 2023
1 parent e603694 commit ffd1c41
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/MeshInertiaCalculator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ using namespace sim;
//////////////////////////////////////////////////
void MeshInertiaCalculator::GetMeshTriangles(
std::vector<Triangle>& _triangles,
gz::math::Vector3d _meshScale,
const gz::common::Mesh* _mesh)
{
// Get the vertices & indices of the mesh
Expand All @@ -60,6 +61,12 @@ void MeshInertiaCalculator::GetMeshTriangles(
triangle.v2.X() = vertArray[static_cast<ptrdiff_t>(3 * indArray[i+2])];
triangle.v2.Y() = vertArray[static_cast<ptrdiff_t>(3 * indArray[i+2] + 1)];
triangle.v2.Z() = vertArray[static_cast<ptrdiff_t>(3 * indArray[i+2] + 2)];

// Apply mesh scale to the triangle coordinates
triangle.v0 = triangle.v0 * _meshScale;
triangle.v1 = triangle.v1 * _meshScale;
triangle.v2 = triangle.v2 * _meshScale;

triangle.centroid = (triangle.v0 + triangle.v1 + triangle.v2) / 3;
_triangles.push_back(triangle);
}
Expand Down Expand Up @@ -245,7 +252,7 @@ std::optional<gz::math::Inertiald> MeshInertiaCalculator::operator()
gz::math::Pose3d inertiaOrigin;

// Create a list of Triangle objects from the mesh vertices and indices
this->GetMeshTriangles(meshTriangles, mesh);
this->GetMeshTriangles(meshTriangles, sdfMesh->Scale(), mesh);

// Calculate the mesh centroid and set is as centre of mass
this->CalculateMeshCentroid(centreOfMass, meshTriangles);
Expand Down
1 change: 1 addition & 0 deletions src/MeshInertiaCalculator.hh
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ namespace gz
/// \param[in] _mesh Mesh object
public: void GetMeshTriangles(
std::vector<Triangle>& _triangles,
gz::math::Vector3d _meshScale,
const gz::common::Mesh* _mesh);

/// \brief Function to calculate the centroid of the mesh. Since
Expand Down

0 comments on commit ffd1c41

Please sign in to comment.