You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

53 lines
1.4 KiB

class SDF:
def __init__(self, stl_file):
import igl
self.V, self.F = igl.read_triangle_mesh(stl_file)
def query(self,queries):
import igl
sdf_value = igl.signed_distance(queries, self.V, self.F)[0]
return sdf_value
def query_dev(self,queries):
import igl
ret_tuple = igl.signed_distance(queries, self.V, self.F)
sdf_value = ret_tuple[0]
closest_F_idx = ret_tuple[1]
return sdf_value, closest_F_idx
import igl
import numpy as np
def query(queries,V,F):
if F.ndim==1:
F=F[None,:]
if queries.ndim==1:
queries=queries[None,:]
sdf_value=igl.signed_distance(queries, V, F)[0]
return sdf_value
def query_dev(queries,V,F):
import numpy as np
if F.ndim==1:
F=F[None,:]
if queries.ndim==1:
queries=queries[None,:]
sdf_value=igl.signed_distance(queries, V, F)[0]
F_idx = igl.signed_distance(queries, V, F)[1]
return np.vstack((sdf_value, F_idx))
# stl_file='/home/cflin/MatlabCode/TopCSG/SolidWoks Files/BearingBracket/BearingB.STL'
# sdf=SDF(stl_file)
# ret=query_dev(np.array([[3.,1,3],[2.,3,3]]),sdf.V,sdf.F);
# def test_ret():
# return 1,2
# a,b=test_ret()
# pass
# tarr=np.array([3])
# print(tarr.ndim)
# print(tarr.shape)
# tarr=tarr[None,:]
# print(tarr.ndim)
# print(tarr.shape)