import numpy as np
import open3d
from vispy import io
import numpy as np
import os
import mayavi.mlab
mesh=[[[0]*3]*10000]*14
FDI=[17,16,15,14,13,12,11,21,22,23,24,25,26,27];
for i in range(14):
mesh[i]=open3d.io.read_triangle_mesh(‘C:/Users/lixiaohu/Desktop/auto切牙数据/1234567/150451-0/tooth_0_’+str(FDI[i])+’.obj’)
mesh1= open3d.io.read_triangle_mesh(‘C:/Users/lixiaohu/Desktop/101028/101028_l/TOOTH_0.obj’)
V=np.asarray(mesh.vertices)
v=np.mean(V,0)
bb=np.asarray(mesh.triangles)
a=np.random.rand(3,3)
q,r=np.linalg.qr(a)
V1=np.dot(V,q)+[1,2,3]
def pca(X, d):
# Centralization
means = np.mean(X, 0)
X = X - means
# Covariance Matrix
covM = np.dot(X.T, X)
eigval, eigvec = np.linalg.eig(covM)
indexes = np.argsort(eigval)[-d:]
W = eigvec[:, indexes]
return W
X3=pca(V,3)
x = V[:,0]
y = V[:,1]
z = V[:,2]
d = np.sqrt(x ** 2 + y ** 2 + z ** 2) # 距离
fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 480))
mayavi.mlab.triangular_mesh(x, y, z, bb, color=(0.7, 0.7, 0.7))
mayavi.mlab.triangular_mesh(V1[:,0],V1[:,1],V1[:,2], bb, color=(0.7, 0.7, 0.7))
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[0,0],X3[0,1],X3[0,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[1,0],X3[1,1],X3[1,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[2,0],X3[2,1],X3[2,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.show()