diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
index a70f32d036bcfc3352a538bddc292a600de0d38a..cf00f0daf9c811b2f20660ad8e46d7beaf8a36a8 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
@@ -2,6 +2,7 @@ package cz.fidentis.analyst.mesh.core;
 
 import java.util.List;
 import cz.fidentis.analyst.mesh.MeshVisitor;
+import javax.vecmath.Vector3d;
 
 /**
  * An ancapsulated mesh plate, i.e., multiple triangles sharing vertices.
@@ -66,6 +67,36 @@ public interface MeshFacet extends Iterable<MeshTriangle> {
      */
     int getNumTriangles();
     
+    /**
+     * Returns triangles sharing the given mesh vertex.
+     * 
+     * @param vertexIndex Index of the mesh vertex
+     * @return Triangles sharing the mesh vertex
+     */
+    List<MeshTriangle> getAdjacentTriangles(int vertexIndex);
+    
+    /**
+     * Finds and returns a point lying at triangles around (sharing) the given mesh vertex
+     * and being the closest to a 3D point.
+     * 
+     * @param point 3D point
+     * @param vertexIndex Index of mesh vertex
+     * @return The closest surface point near the mesh vertex being closest 
+     * to the given 3D point
+     */
+    Vector3d getClosestAdjacentPoint(Vector3d point, int vertexIndex);
+    
+    /**
+     * Returns the distance between a 3D point and triangles around (sharing)
+     * the given mesh vertex. It is the distance between the 3D point and 
+     * point found by the {@link MeshFacet#getClosestAdjacentPoint} method.
+     * 
+     * @param point 3D point
+     * @param vertexIndex Index of mesh vertex
+     * @return Distance
+     */
+    double curvatureDistance(Vector3d point, int vertexIndex);
+    
     /**
      * Visits this facet.
      * 
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java
index 7ad43d2b90a18fd2df36b7601797dc106f8340b5..a2b6a48d771385a3a728e434c3cddf5a6fcf1df9 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java
@@ -107,6 +107,62 @@ public class MeshFacetImpl implements MeshFacet {
         return cornerTable.getSize();
     }
     
+    @Override
+    public List<MeshTriangle> getAdjacentTriangles(int vertexIndex) {
+        List<MeshTriangle> ret = new ArrayList<>();
+            
+        List<Integer> adjacentTrianglesI = cornerTable.getTriangleIndexesByVertexIndex(vertexIndex);
+        for (Integer triI: adjacentTrianglesI) {
+            List<Integer> triVerticesI = cornerTable.getIndexesOfVerticesByTriangleIndex(triI);
+            MeshTriangle tri = new MeshTriangle(
+                    getVertex(triVerticesI.get(0)),
+                    getVertex(triVerticesI.get(1)),
+                    getVertex(triVerticesI.get(2)),
+                    triVerticesI.get(0),
+                    triVerticesI.get(1),
+                    triVerticesI.get(2));
+            ret.add(tri);
+        }
+        
+        return ret;
+    }
+    
+    @Override
+    public Vector3d getClosestAdjacentPoint(Vector3d point, int vertexIndex) {
+        double dist = Double.POSITIVE_INFINITY;
+        Vector3d ret = null;
+        
+        for (MeshTriangle tri: this.getAdjacentTriangles(vertexIndex)) {
+            Vector3d projection = tri.getClosestPoint(point);
+            Vector3d aux = new Vector3d(projection);
+            aux.sub(point);
+            double d = aux.length();
+            if (d < dist) {
+                dist = d;
+                ret = projection;
+            }
+        }
+        
+        return ret;
+    }
+    
+    @Override
+    public double curvatureDistance(Vector3d point, int vertexIndex) {
+        double dist = Double.POSITIVE_INFINITY;
+        
+        for (MeshTriangle tri: this.getAdjacentTriangles(vertexIndex)) {
+            Vector3d projection = tri.getClosestPoint(point);
+            Vector3d aux = new Vector3d(projection);
+            aux.sub(point);
+            double d = aux.length();
+            if (d < dist) {
+                dist = d;
+            }
+        }
+        
+        return dist;
+    }
+    
     @Override
     public Iterator<MeshTriangle> iterator() {
         return new Iterator<MeshTriangle>() {