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)