#python #matplotlib #3d #2d
Вопрос:
Я хотел бы нарисовать 3D-геометрические чертежи такого типа: https://en.wikipedia.org/wiki/Spherical_coordinate_system#/media/File:Spherical_coordinate_system.svg
Но я хочу иметь возможность 3D-поворота/панорамирования/масштабирования, как вы обычно можете с помощью matplotlib, и я хочу, чтобы результат был с этим плоским аспектом, как на бумажных иллюстрациях. Вращение и панорамирование помогли бы мне изучить проблему с разных ракурсов, и в конце концов я бы сохранил предпочтительный вид, который лучше всего отражает проблему.
Из моих попыток 3D-сфера скроет круг, который вы рисуете вокруг нее (параллели и меридианы) для некоторых известных ограничений matplotlib. Вот пример, показывающий круги (большие, чем сфера, но закрытые ею):
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')
# The data
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
R = 0.9
x = R * np.outer(np.cos(u), np.sin(v))
y = R * np.outer(np.sin(u), np.sin(v))
z = R * np.outer(np.ones(np.size(u)), np.cos(v))
# Plot the sphere
ax.plot_surface(x, y, z, color='w')
# Make a circle around the sphere
elev = 10.0
rot = 80.0 / 180 * np.pi
a = np.array([-np.sin(elev / 180 * np.pi), 0, np.cos(elev / 180 * np.pi)])
b = np.array([0, 1, 0])
b = b * np.cos(rot) np.cross(a, b) * np.sin(rot) a * np.dot(a, b) * (1 - np.cos(rot))
ax.plot(np.sin(u),np.cos(u),0,color='k', linestyle = 'dashed', alpha=1)
horiz_front = np.linspace(0, np.pi, 100)
ax.plot(np.sin(horiz_front),np.cos(horiz_front),0,color='k')
plt.show()
Более того, в той иллюстрации, которую я ищу, одна сфера (без меридианов и параллелей) будет выглядеть как круг, но я не могу использовать 3D-круг, если я не буду рисовать его всегда в плоскости проекции (и я не знаю, как). Многогранная сфера (которая, по-видимому, является способом создания сферы в matplotlib), похоже, не подходит для этой цели.
(В какой — то степени я предполагаю, что мне нужна базовая функциональность САПР для визуализации фигур — например, со скрытыми линиями или без них, — но с возможностью правильного аннотирования и стрелок на рисунке.)
У кого-нибудь есть предложения о том, как создать эти, по-видимому, 2D-чертежи с использованием реального 3D-графика?
Заранее спасибо. C