code: def mass_properties(self):
          
          mass = triangles.mass_properties(triangles=self.triangles,
                                           crosses=self.triangles_cross,
                                           density=self._density,
                                           center_mass=self._center_mass,
                                           skip_inertia=False)
  
          # if magical clean- up mode is enabled
          # and mesh is watertight/wound correctly but with negative
          # volume it means that every triangle is probably facing
          # inwards, so we invert it in- place without dumping cache
          if (self._validate and
              self.is_watertight and
              self.is_winding_consistent and
              np.linalg.det(mass['inertia']) < 0.0 and
              mass['mass'] < 0.0 and
                  mass['volume'] < 0.0):
  
              # negate mass properties so we don't need to recalculate
              mass['inertia'] = -mass['inertia']
              mass['mass'] = -mass['mass']
              mass['volume'] = -mass['volume']
              # invert the faces and normals of the mesh
              self.invert()
          return mass
docs: Returns the mass properties of the current mesh.
  
          Assumes uniform density, and result is probably garbage if mesh
          isn't watertight.
  
          Returns
          ----------
          properties : dict
            With keys:
            'volume'      : in global units^3
            'mass'        : From specified density
            'density'     : Included again for convenience (same as kwarg density)
            'inertia'     : Taken at the center of mass and aligned with global
                           coordinate system
            'center_mass' : Center of mass location, in global coordinate system