3d_visualisation
1 回表示 (過去 30 日間)
古いコメントを表示
Reyhaneh S. Ghazanfari
2016 年 1 月 12 日
コメント済み: Reyhaneh S. Ghazanfari
2016 年 1 月 12 日
Hello!
I have drawn a 3d surface using the surf function. I would like to visualize the 3D volume enclosed between this surf and the x-axis. Would that be possible in Matlab?
Thanks!
Reyhaneh
0 件のコメント
採用された回答
Mike Garrity
2016 年 1 月 12 日
編集済み: Mike Garrity
2016 年 1 月 12 日
There are some utilities for this on the file exchange, and there is the isocaps function which works with isosurface, but there isn't a builtin utility for adding "skirts" to the surface that the surf function creates.
It's actually relatively easy to do by hand. Here's a simple example:
% Create some interesting sample data
[x,y,z] = peaks;
z = z+3;
x = x(20:end,20:end);
y = y(20:end,20:end);
z = z(20:end,20:end);
[m,n] = size(z);
% Create the original surface
surf(x,y,z);
% Create 4 surfaces around the edges
hold on
walls(1) = surf([x( 1,:); x( 1,:)],[y( 1,:); y( 1,:)],[zeros(1,n); z( 1,:)])
walls(2) = surf([x(end,:); x(end,:)],[y(end,:); y(end,:)],[zeros(1,n); z(end,:)])
walls(3) = surf([x(:, 1), x(:, 1)],[y(:, 1), y(:, 1)],[zeros(m,1), z(:, 1)])
walls(4) = surf([x(:,end), x(:,end)],[y(:,end), y(:,end)],[zeros(m,1), z(:,end)])
set(walls,'FaceColor','interp')
But this only works if all of your Z values are on one side of the origin. If they cross, you need to do something similar to what I described in this blog post about a similar 2D problem.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Thermal Analysis についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!