Untitled

mail@pastecode.io avatar
unknown
python
7 months ago
655 B
1
Indexable
Never
alpha=1

def distance(x, p, n):
    return np.dot(n,(x-p))

def weight(x, p):
    return np.exp(-alpha*np.linalg.norm(x-p)**2)

def updateVolumes(v,p,n):
    voxelInSpace = xform.map(v)
    w = weight(voxelInSpace,p)
    d = distance(voxelInSpace,p,n)
    volume[v] += w*d
    volume_w[v] += w

voxelPointMap = dict()

for i in range(NO_POINTS):
    point = point_mat[i,:]
    normal = norm_mat[i,:]
    corresponding_voxel = xform.inv_map(point)
    neighbours = voxel_neighbourhood(volume_dimensions, corresponding_voxel)
    for neighbour in neighbours:
        updateVolumes(neighbour,point,normal)

volume /= (volume_w+1e-10)
Leave a Comment