diff --git a/GeoLib/AnalyticalGeometry.cpp b/GeoLib/AnalyticalGeometry.cpp
index 5165b8f057aba5eb9738daba362307a5cdae7b79..aefacc604680022d3efa48abb10d5a919b93d831 100644
--- a/GeoLib/AnalyticalGeometry.cpp
+++ b/GeoLib/AnalyticalGeometry.cpp
@@ -333,6 +333,17 @@ double calcTetrahedronVolume(const double* x1, const double* x2, const double* x
 	return std::abs(GeoLib::scalarTriple(ac, ad, ab)) / 6.0;
 }
 
+double calcTetrahedronVolume(MathLib::Point3d const& x1,
+	MathLib::Point3d const& x2,
+	MathLib::Point3d const& x3,
+	MathLib::Point3d const& x4)
+{
+	const MathLib::Vector3 ab(x1, x2);
+	const MathLib::Vector3 ac(x1, x3);
+	const MathLib::Vector3 ad(x1, x4);
+	return std::abs(GeoLib::scalarTriple(ac, ad, ab)) / 6.0;
+}
+
 // NewellPlane from book Real-Time Collision detection p. 494
 void getNewellPlane(const std::vector<GeoLib::Point*>& pnts, MathLib::Vector3 &plane_normal, double& d)
 {
diff --git a/GeoLib/AnalyticalGeometry.h b/GeoLib/AnalyticalGeometry.h
index 1aa44c198b6c20c3590138bb8e635213257ddde3..7abe3260ae26358c8d3fe4b7ba9f077aec66a6bd 100644
--- a/GeoLib/AnalyticalGeometry.h
+++ b/GeoLib/AnalyticalGeometry.h
@@ -116,6 +116,10 @@ double calcTriangleArea(MathLib::Point3d const& a, MathLib::Point3d const& b,
  * The formula is V=1/6*|a(b x c)| with a=x1->x2, b=x1->x3 and c=x1->x4.
  */
 double calcTetrahedronVolume(const double* x1, const double* x2, const double* x3, const double* x4);
+double calcTetrahedronVolume(MathLib::Point3d const& x1,
+	MathLib::Point3d const& x2,
+	MathLib::Point3d const& x3,
+	MathLib::Point3d const& x4);
 
 /**
  * Tests if the given point p is within the triangle, defined by its edge nodes a, b and c.