MATLAB Answers

0

三角形膜要素の分布図​(任意の(x,y)座​標で)を作成したいの​ですが、方法はありま​せんでしょうか。

Asked by Hirotaka Nagahama on 1 Aug 2019
Latest activity Commented on by Hirotaka Nagahama on 2 Aug 2019
三角形メッシュの評価を行うのに、三角膜要素の分布図または等高線のようなものを可視化したいです。
任意の(x,y)を代入することで得られるz座標を三角要素の変位として表したいです。
どうしても散布図や三次元プロットを行うと四角形要素でしか表せません。
何かいい方法がございましたら、教えていただきたいです。

  2 Comments

Akira Agata
on 2 Aug 2019
ご質問の "三角膜要素の分布図" とは、以下のようなイメージでしょうか?
trisurf.png
コメントありがとうございます。
はい、分布図のイメージはそのようなものを作成したいです。
あとは、その図を正三角形で表したり、三角形の内部を対象に分布図を作成したいと考えております。
欲を言えば、3つの直線の式で囲まれる範囲を対象にそのような分布図が作成できればと思い、質問させていただきました。

Sign in to comment.

1 Answer

Akira Agata
Answer by Akira Agata
on 2 Aug 2019
 Accepted Answer

ご説明ありがとうございます。おおよそ理解しました。
まず、任意の (x,y) 座​標に対して何らかの値 z (例えば関数 z = f(x,y) の出力値)があったとして、それらの隣接する点どうしを三角形で結んで3次元曲面として表示するには、以下のようにすれば可能です(念のため、各 x,y,z 座標を赤点で図中に示しています)。
% Sample data, assuming selected (x,y) and z = f(x,y) points
x = 2*rand(100,1);
y = 2*rand(100,1);
func = @(x,y) exp(-x.^2 - y.^2);
z = func(x,y);
% Delaunay triangulation
tri = delaunay(x,y);
% Triangular surface plot
figure
trisurf(tri,x,y,z)
hold on
scatter3(x,y,z,'ro','filled')
view([80 40])
trisurf1.png
また、上記 (x,y) 点群のうち、ある三角形の範囲内を対象にこのような図を作成するには、以下のような方法はいかがでしょうか?
(こちらも念のため、元の3次元曲面全体をワイヤーフレームで表示しています)
% Sample regular triangle
pgon = nsidedpoly(3,'Center',[1 1]);
idx = isinterior(pgon,x,y);
x2 = [x(idx); pgon.Vertices(:,1)];
y2 = [y(idx); pgon.Vertices(:,2)];
z2 = [z(idx); func(pgon.Vertices(:,1),pgon.Vertices(:,2))];
% Delaunay triangulation
tri2 = delaunay(x2,y2);
% Triangular surface plot
figure
trisurf(tri2,x2,y2,z2)
hold on
trisurf(tri,x,y,z,'FaceAlpha',0)
scatter3(x2,y2,z2,'ro','filled')
view([80 40])
trisurf2.png

  1 Comment

わかりやすく、そして早急なご回答いただきありがとうございます。
イメージ通りの結果です。
この方法にて評価していきたいと思います。
誠にありがとうございました。

Sign in to comment.