вот код, о котором идет речь в названии этого номера, который у меня есть. У меня есть производные от руки формулы, лежащие в основе моего кода, так что, похоже, это не так ...
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import random as rdm
resol = 30
resolcirc = 15
r=1
########## THE SPHERE ##########
phi = np.linspace(0, np.pi*((resol-1)/resol), resol)
theta = np.linspace(0, 2*np.pi*((resol*2-1)/resol*2), resol*2)
phi, theta = np.meshgrid(phi, theta)
x = r * np.sin(phi) * np.cos(theta)
y = r * np.sin(phi) * np.sin(theta)
z = r * np.cos(phi)
########## THE RANDOM POINT ##########
r1=1
randphi = rdm.random()*np.pi
randtheta = rdm.random()*2*np.pi
x1 = r1 * np.sin(randphi) * np.cos(randtheta)
y2 = r1 * np.sin(randphi) * np.sin(randtheta)
z3 = r1 * np.cos(randphi)
radpoint = 0.5
########## THE RANDOM CIRCLE ##########
rcirc=0.2
gamma = np.linspace(0, 2*np.pi*((resol-1)/resol), resol)
rotanglephi = -1 * rcirc * np.cos(gamma)
rotangletheta = rcirc * np.sin(gamma)
psitheta=2*np.sin(-1*rcirc*np.cos(gamma)/r)
psiphi=2*np.sin(rcirc*np.sin(gamma)/r)
x1 = r1 * np.sin(randphi+psiphi) * np.cos(randtheta+psitheta)
y2 = r1 * np.sin(randphi+psiphi) * np.sin(randtheta+psitheta)
z3 = r1 * np.cos(randphi+psiphi)
########## THE PLOT ###########
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c='y', marker='.')
ax.scatter(x1,y2,z3, c='r', marker = 'x',s=50)
plt.tight_layout()
#plt.axis('off')
plt.show()
Обычно это работает совершенно нормально, как и предполагалось, например: введите описание изображения здесь
Однако я не могу на всю жизнь выяснить, почему это вызывает у меня такое странное поведение сверху и снизу сферы: введите описание изображения здесь
Это абсолютный первый шаг этого кода, где мне нужно будет создать точку и сделать вокруг нее кольцо, которое будет двигаться по орбите на этой сферической поверхности. Помощь высоко ценится!