python如何画球,Python绘制球体的方法

原创
ithorizon 8个月前 (09-26) 阅读数 33 #Python

Python中可以使用matplotlib库来绘制球体,以下是一个简单的示例代码,展示了如何使用matplotlib绘制一个球体:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
创建一个3D图形
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
设置坐标轴标签和标题
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('球体绘制')
绘制一个球体
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
z = np.linspace(-1, 1, 100)
x, y, z = np.meshgrid(x, y, z)
r = np.sqrt(x2 + y2 + z2)
theta = np.linspace(0, 2*np.pi, 100)
phi = np.linspace(0, np.pi, 100)
theta, phi = np.meshgrid(theta, phi)
将球体的表面展开成两个三角形面片
u = np.sin(phi) * np.cos(theta)
v = np.sin(phi) * np.sin(theta)
w = np.cos(phi)
计算每个顶点的坐标
vertices = np.column_stack((u, v, w))
计算每个面的法向量(由于球体是对称的,我们可以重复使用顶点坐标作为法向量)
normals = vertices.T
计算每个面的顶点索引(每个面由两个顶点定义)
indices = np.column_stack((range(0, len(vertices), 2), range(1, len(vertices), 2)))
绘制球体表面
ax.plot_surface(vertices, normals=normals, indices=indices, color='b', alpha=0.5)
ax.plot_surface(vertices[::-1], normals[::-1], indices[::-1], color='b', alpha=0.5)
显示图形
plt.show()


热门