Matlab を使用してこのグラフを作成しようとしています。組み込みの楕円体関数は紛らわしいです。この問題では、2 つの変数 (幅と長さ) と一定の高さがあります。
非常に簡単にするために、先端に近づくと幅が変化するが、高さは一定であることを示したいと思います。w、x、h は、グラフに表示される変数です。
誰かが助けてくれれば本当にありがたいです。
Matlab を使用してこのグラフを作成しようとしています。組み込みの楕円体関数は紛らわしいです。この問題では、2 つの変数 (幅と長さ) と一定の高さがあります。
非常に簡単にするために、先端に近づくと幅が変化するが、高さは一定であることを示したいと思います。w、x、h は、グラフに表示される変数です。
誰かが助けてくれれば本当にありがたいです。
次のコードはあなたに長い道のりを与えると思います。出力例を参照してください。
私はあなたがここからそれを取ることができるはずであるという十分なコメントを追加しました...
% plot ellipsoid in 3D
% height and width of ellipsoid:
e_h = 10;
e_w = 3;
% position where the "quivers" (arrows) go:
q_offset = 2; % distance from axis
q_scale = 0.5; % multiplier to give parabola some size
q_spacing = 0.5; % distance between arrows
q_height = 2.5; % height above XY plane where arrows are drawn
N = 1000; % number of points for drawing
theta = linspace(0, 2*pi, N); % parameter to help drawing ellipse
zerov = zeros(1, N); % array of zeros that I will need
% coordinates of main ellipse:
x = e_w * sin(theta);
y = zeros(size(x));
z = e_h * cos(theta);
% plot main ellipse:
figure;
plot3(x, y, z)
% secondary plot
y2 = q_scale*(e_w.^2 - x.^2) + 2; % offset parabola - what your plot looked like...
hold on
plot3(x, y2, zerov+q_height); % plotting the parabola in the XY plane at height
axis equal % make the plot dimensions isotropic
% add quivers
q_base = -e_w:q_spacing:e_w; % x coordinate; y and z are fixed
q_length = (e_w.^2 - q_base.^2)*q_scale; % length of quiver - just an equation I chose
q0 = zeros(size(q_base)); % another vector I will need multiple times
q1 = ones(size(q_base)); % ditto
% plot the arrows: the "-1" argument means "don't scale"
quiver3(q_base, q0+q_offset, q_height*q1, q0, q_length, q0, -1)