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
53 lines
1.4 KiB
8 months ago
|
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)
|