Skip to content
Snippets Groups Projects
reference_distance.jl 1.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    
    function signed_distance1(mesh, point)
        verts = GeometryTypes.vertices(mesh)
        fs = GeometryTypes.faces(mesh)
        int_dist = maximum([ReferenceDistance.interior_distance(verts[f], point) for f in fs])
        if int_dist <= 0
            return int_dist
        else
            ext_dist = minimum([ReferenceDistance.exterior_distance(verts[f], point) for f in fs])
            return ext_dist
        end
    end
    
    function signed_distance1(mesh)
        point -> signed_distance1(mesh, point )
    end
    
    
    function adjustedSignedDistance(mesh, point)
        tol=0.00
        verts = GeometryTypes.vertices(mesh)
        fs = GeometryTypes.faces(mesh)
        int=false
        int_dist = maximum([ReferenceDistance.interior_distance(verts[f], point) for f in fs])
        if int_dist <= 0
            int=true
        end
        int_dist = minimum([ReferenceDistance.interior_distance(verts[f], point) for f in fs])
        if int_dist >= 0
            if int
                int_dist = minimum([int_dist,tol])
            end
            return -int_dist
        else
            ext_dist = minimum([ReferenceDistance.exterior_distance(verts[f], point) for f in fs])
            if int
                ext_dist = minimum([ext_dist,tol])
            end
            return ext_dist
        end
    end
    
    function adjustedSignedDistance(mesh )
        point -> adjustedSignedDistance(mesh, point )
    end