diff --git a/MathLib/Point3d.cpp b/MathLib/Point3d.cpp
index dd2b543e505c7a25120acf1905a5d1a4b9bdc086..7d929ef1765bf99b61ae61f39210c76965375945 100644
--- a/MathLib/Point3d.cpp
+++ b/MathLib/Point3d.cpp
@@ -15,6 +15,36 @@
 
 #include "Point3d.h"
 
+bool operator< (const MathLib::Point3d& p0, const MathLib::Point3d& p1)
+{
+	if (p0[0] > p1[0]) {
+		return false;
+	} else {
+		if (p0[0] < p1[0]) {
+			return true;
+		}
+	}
+	// => p0[0] == p1[0]
+
+	if (p0[1] > p1[1]) {
+		return false;
+	} else {
+		if (p0[1] < p1[1]) {
+			return true;
+		}
+	}
+	// => p0[1] == p1[1]
+
+	if (p0[2] > p1[2]) {
+		return false;
+	} else {
+		if (p0[2] < p1[2]) {
+			return true;
+		}
+		return false; // p0 == p1
+	}
+}
+
 bool operator<= (const MathLib::Point3d& p0, const MathLib::Point3d& p1)
 {
 	if (p0[0] > p1[0]) {
diff --git a/MathLib/Point3d.h b/MathLib/Point3d.h
index 51d5e67ca8c00eca62d28c8dd2ff012e4f6635be..75368621aa822dd8c9df062d82378b795938e4e7 100644
--- a/MathLib/Point3d.h
+++ b/MathLib/Point3d.h
@@ -23,6 +23,8 @@ namespace MathLib
 typedef MathLib::TemplatePoint<double,3> Point3d;
 } // end namespace MathLib
 
+bool operator< (MathLib::Point3d const & p0, MathLib::Point3d const & p1);
+
 /**
  * lexicographic comparison of points
  */