• 大小: 2KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: Python
  • 标签: python  球体  算法  

资源简介

在三维空间中对当前数据集的散点进行球体拟合获得球体描述,球体中心坐标,球体半径。

资源截图

代码片段和文件信息

#! /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()
 

评论

共有 条评论