簡體   English   中英

如何在Python中繪制球形段?

[英]How to plot a spherical segment in Python?

如何繪制球形段,特別是Python中的球形“切片”?

我知道如何通過繪制球面

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z,  rstride=4, cstride=4, color='b')
plt.show()

或該代碼的某些變體,但我一直在努力僅繪制球體的一部分,從而得到如下圖像:

https://en.wikipedia.org/wiki/Spherical_segment#/media/File:LaoHaiKugelschicht1.png

如果我通過操縱u和v的定義來改變上面提供的代碼,例如:

u = np.linspace(0, 2 * np.pi, 20)
v = np.linspace(0, np.pi, 20)

該球體仍然是一個整體,但分辨率很差。 更改linspace范圍的起點似乎沒有任何改變。

我想出了一些對我有用的東西。 干得好:

q = 0.5  # defines upper starting point of the spherical segment
p = 0.8  # defines ending point of the spherical segment as ratio


u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(q, p * np.pi, p * 100)
x = r * np.outer(np.cos(u), np.sin(v)) + x_0
y = r * np.outer(np.sin(u), np.sin(v)) + y_0
z = r * np.outer(np.ones(np.size(u)), np.cos(v)) + z_0
ax.plot_surface(x, y, z, color='b')

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM