J'utilisais plot_surface
pour créer une structure conique avec des parties haut et bas en 3D, voir le code ci-dessous. Avec l'angle de vue azim=90.
, le cône inférieur est plus clair à gauche et plus foncé à droite. On pourrait s'attendre à la même chose pour le cône supérieur si la "source lumineuse" vient du côté gauche. Cependant, le cône supérieur a l'ombrage opposé et reste ainsi pour d'autres angles de vue que je choisis.mplot3d: modifier l'ombrage par défaut (opposé)
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(3,4));
ax = fig.add_subplot(111,projection='3d')
theta = np.linspace(0,2*np.pi,360)
r = np.linspace(0,1,100)
T, R = np.meshgrid(theta, r)
X = R * np.cos(T)
Y = R * np.sin(T)
Zup = np.sqrt(X**2 + Y**2)
ax.plot_surface(X, Y, Zup, rstride=1, cstride=1, linewidth=0,
antialiased=True,alpha=0.7,color='orange')
ax.plot_surface(X, Y, -Zup, rstride=1, cstride=1, linewidth=0,
antialiased=True,alpha=0.7,color='orange')
ax.set_axis_off()
ax.view_init(elev=4., azim=90.)
ax.dist=6
fig.tight_layout(pad=0.)
À certain angle (par exemple. azim=45
), les deux cônes semble homogène mais je voudrais qu'ils aient une (cohérente) l'éclairage. Merci d'avance.
Peut-être que vous attendez un peu trop d'une bibliothèque qui n'a jamais été conçu pour 3D tracé. – ImportanceOfBeingErnest
@ImportanceOfBeingErnest Je vois, je suis presque satisfait de ce que j'ai maintenant, juste curieux de savoir pourquoi il existe une différence ... – Phyinmi