資源簡介
在三維空間中對當前數(shù)據(jù)集的散點進行球體擬合獲得球體描述,球體中心坐標,球體半徑。
代碼片段和文件信息
#!?/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
#?__file__:?擬合球體
#?__date__:
#?__author__:?huifer
import?numpy?as?np
import?math
from?matplotlib?import?pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D
import?csv
def?qiuti(x_list?y_list?z_list):
????“““
????球體計算
????:param?x_list:
????:param?y_list:
????:param?z_list:
????:return:
????“““
????#?右側矩陣
????x_list?=?np.array(x_list)
????y_list?=?np.array(y_list)
????z_list?=?np.array(z_list)
????right_mat?=?np.zeros((len(x_list)?4))
????right_mat[:?0]?=?x_list?*?2
????right_mat[:?1]?=?y_list?*?2
????right_mat[:?2]?=?z_list?*?2
????right_mat[:?3]?=?1
????#?等號左側
????left_mat?=?np.zeros((len(x_list)?1))
????left_mat[:?0]?=?(x_list?*?x_list)?+?(y_list?*?y_list)?+?(z_list?*?z_list)
????C?residules?rank?singval?=?np.linalg.lstsq(right_mat?left_mat)
????#?求半徑
????t?=?(C[0]?*?C[0])?+?(C[1]?*?C[1])?+?(C[2]?*?C[2])?+?C[3]
????radius?=?math.sqrt(t)
????return?radius?C[0]?C[1]?C[2]
def?show_qiut(x_list?y_list?z_list):
????“““
????三維展示球體
????:param?x_list:
????:param?y_list:
????:param?z_list:
????:return:
????“““
????fig?=?plt.figure()
?
評論
共有 條評論