3次元の曲面上にコン​ターを描画する方法を​探しています

18 views (last 30 days)
macaroni
macaroni on 15 Mar 2017
Commented: Jiro Doke on 17 Mar 2017
ある任意のxyz座標上の点が特定の値を保有し、それが複数存在したとき、それらの点の集合で形成される3次元曲面上に、それぞれの点が保有する値でのコンターの描画を行う方法を探しています。

Accepted Answer

Jiro Doke
Jiro Doke on 15 Mar 2017
contourslice で可能かと思います。ドキュメントの2つ目の例(球面に沿った等高線スライス)を参照してみてください。
もう一つサンプルです。
xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
z = x.*exp(-x.^2-y.^2);
v = peaks(x,y); % 適当に x,y,z 点の値を定義
scatter3(x,y,z,[],v)
% contourslice が必要としている点の集合データからボリュームデータに変換
[X,Y,Z] = meshgrid(-2.5:.1:2.5,-2.5:.1:2.5,-0.4:.01:.4);
V = griddata(x,y,z,v,X,Y,Z);
% 同じく等高線を描く表面も表面データに変換
[xq,yq] = meshgrid(-2.5:.1:2.5,-2.5:.1:2.5);
zq = griddata(x,y,z,xq,yq);
% 可視化
figure
contourslice(X,Y,Z,V,xq,yq,zq,10) % 10本の等高線
grid on
view(3)

More Answers (1)

Tohru Kikawada
Tohru Kikawada on 15 Mar 2017
曲面上に等高線を表示するには contour3 がお使いいただけます。
下記の回答も参考になりそうです。
一方、任意のxyz座標上の特定の値というのはボリュームデータか点群を指していますでしょうか。
その際、それぞれの点が保有する値のコンターとはどういうことでしょうか。
点が保有する値の同値線を曲面に投影するという意味でしょうか。
何か参考になるイメージ図があるとより適切な回答ができそうです。
  2 Comments
macaroni
macaroni on 16 Mar 2017
回答ありがとうございます。 イメージとしては、下の図のようなものをイメージしています。 円柱表面のそれぞれの座標が保有する値の大きさがカラーマップで表現されています。
下記のイメージでは、カラーマップとなっていますが、点が保有する値の同値線を曲面に投影するという認識で相違ないかと思います。
Jiro Doke
Jiro Doke on 17 Mar 2017
おそらく contourslice でできるかと思います。

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!