import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Parámetros de la superficie con mayor resolución
u = np.linspace(0, 2 * np.pi, 200)
v = np.linspace(0, 1, 200)
u, v = np.meshgrid(u, v)
# Coordenadas en cilíndricas
x = v * np.cos(u)
y = v * np.sin(u)
z = np.sqrt(4 - x**2 - y**2)
# Gráfica de la superficie mejorada con colores comunes
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, color='skyblue', edgecolor='grey', alpha=0.7)
# Agregamos líneas de contorno en blanco
ax.contour(x, y, z, zdir='z', offset=0, colors='white')
ax.contour(x, y, z, zdir='x', offset=-1.5, colors='white')
ax.contour(x, y, z, zdir='y', offset=1.5, colors='white')
# Ajustes de la figura
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Superficie S')
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_zlim(0, 2)
ax.view_init(elev=30, azim=120) # Cambia la perspectiva de la vista
plt.show()
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKZnJvbSBtcGxfdG9vbGtpdHMubXBsb3QzZCBpbXBvcnQgQXhlczNECgojIFBhcsOhbWV0cm9zIGRlIGxhIHN1cGVyZmljaWUgY29uIG1heW9yIHJlc29sdWNpw7NuCnUgPSBucC5saW5zcGFjZSgwLCAyICogbnAucGksIDIwMCkKdiA9IG5wLmxpbnNwYWNlKDAsIDEsIDIwMCkKdSwgdiA9IG5wLm1lc2hncmlkKHUsIHYpCgojIENvb3JkZW5hZGFzIGVuIGNpbMOtbmRyaWNhcwp4ID0gdiAqIG5wLmNvcyh1KQp5ID0gdiAqIG5wLnNpbih1KQp6ID0gbnAuc3FydCg0IC0geCoqMiAtIHkqKjIpCgojIEdyw6FmaWNhIGRlIGxhIHN1cGVyZmljaWUgbWVqb3JhZGEgY29uIGNvbG9yZXMgY29tdW5lcwpmaWcgPSBwbHQuZmlndXJlKGZpZ3NpemU9KDEwLCA3KSkKYXggPSBmaWcuYWRkX3N1YnBsb3QoMTExLCBwcm9qZWN0aW9uPSczZCcpCmF4LnBsb3Rfc3VyZmFjZSh4LCB5LCB6LCBjb2xvcj0nc2t5Ymx1ZScsIGVkZ2Vjb2xvcj0nZ3JleScsIGFscGhhPTAuNykKCiMgQWdyZWdhbW9zIGzDrW5lYXMgZGUgY29udG9ybm8gZW4gYmxhbmNvCmF4LmNvbnRvdXIoeCwgeSwgeiwgemRpcj0neicsIG9mZnNldD0wLCBjb2xvcnM9J3doaXRlJykKYXguY29udG91cih4LCB5LCB6LCB6ZGlyPSd4Jywgb2Zmc2V0PS0xLjUsIGNvbG9ycz0nd2hpdGUnKQpheC5jb250b3VyKHgsIHksIHosIHpkaXI9J3knLCBvZmZzZXQ9MS41LCBjb2xvcnM9J3doaXRlJykKCiMgQWp1c3RlcyBkZSBsYSBmaWd1cmEKYXguc2V0X3hsYWJlbCgnWCcpCmF4LnNldF95bGFiZWwoJ1knKQpheC5zZXRfemxhYmVsKCdaJykKYXguc2V0X3RpdGxlKCdTdXBlcmZpY2llIFMnKQpheC5zZXRfeGxpbSgtMS41LCAxLjUpCmF4LnNldF95bGltKC0xLjUsIDEuNSkKYXguc2V0X3psaW0oMCwgMikKYXgudmlld19pbml0KGVsZXY9MzAsIGF6aW09MTIwKSAgIyBDYW1iaWEgbGEgcGVyc3BlY3RpdmEgZGUgbGEgdmlzdGEKCnBsdC5zaG93KCk=