
def planefit(points):
'''
todo: 1.generate Auditory canthus line plane
2.
--- Ax + By + C = z
get A B C
reference: https://github.com/SeaTimeMoon/PlaneFit/blob/master/Example1.py
'''
xs = []
ys = []
zs = []
for i in range(len(points)):
xs.append(points[i][0])
ys.append(points[i][1])
zs.append(points[i][2])
tmp_A = []
tmp_b = []
for i in range(len(xs)):
tmp_A.append([xs[i], ys[i], 1])
tmp_b.append(zs[i])
b = np.matrix(tmp_b).T
A = np.matrix(tmp_A)
fit = (A.T * A).I * A.T * b
# print("%f x + %f y + %f = z" % (fit[0], fit[1], fit[2]))
return np.array(fit[0]), np.array(fit[1])
def main():
points = [[379.5,97.5,16],[230.8,87.9,19],[412.5,248.5,3],[134.5,220.5,8]]
planefit(points)
if __name__=="__main__":
main()
其他方法
reference1
reference2
reference3