2017-05-11 1 views
1

Ich versuche, die Oberseite/Unterseite einer zylindrischen Oberfläche zu generieren. Ich konnte hier die Seitenfläche erhalten: Generating a Cylindrical Surface with np.outer. Ich würde gerne wieder np.outer für die Konsistenz verwenden. Ich dachte, ich die Antworten auf den Link jedoch zu verstehen, wenn ich richtig dann sollte folgendes verstanden arbeiten:Python 2D Kreisfläche in 3D

R = 5 
h = 5 
u = np.linspace(0, 2*np.pi, 100) 
x = R * np.outer(np.ones(np.size(u)), np.cos(u))   
y = R * np.outer(np.ones(np.size(u)), np.sin(u))   
z = h * np.outer(np.ones(np.size(u)), np.ones(np.size(u))) 

aber in meiner Plots ist keine Oberfläche erzeugt. Benütze ich np.outer immer noch nicht richtig? Warum wird keine Oberfläche erzeugt?

Antwort

1

Es gibt keine sichtbare Platte, da alle Punkte, die Sie erstellen, genau den gleichen Abstand zur Mitte haben und die Fläche, die sich zwischen "innerem Kreis" und "äußerem Kreis" erstreckt, unendlich dünn ist. Um die Festplatte zu sehen, muss der Radius zwischen 0 und Ihrem gewünschten Wert liegen (5 im Beispiel).

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

R = np.linspace(0, 5, 100) 
h = 5 
u = np.linspace(0, 2*np.pi, 100) 

x = np.outer(R, np.cos(u)) 
y = np.outer(R, np.sin(u)) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.plot_surface(x,y,h) # z in case of disk which is parallel to XY plane is constant and you can directly use h 
fig.show() 

created disk