public TransformedPolysurface(IPolysurface localSurface, RotoTranslation3 localToGlobal)
        {
            _localSurface  = localSurface;
            _localToGlobal = localToGlobal;

            _vertexCollection = new VertexCollection(this);
            _edgeCollection   = new EdgeCollection(this);
            _faceCollection   = new FaceCollection(this);

            _undirectedComparer = new UndirectedEdgeComparerImpl(this);
        }
 public static double DistanceTo(this Vector3 @this, IPolysurface surface)
 {
     return(Math.Sqrt(surface.Faces.Select(f => Polygon3Utils.Distance2(@this, f.Polygon)).Min()));
 }