# 三次元データのプロット、および表面の作製方法

26 views (last 30 days)

Commented: 知真 梶山 on 11 Oct 2021
ｍ1_1,m1_2,...,m8_4,m8_5(計40点)それぞれのxyz座標データがあります。これらの点群を三次元空間にプロットし、隣接する点を繋ぐことで表面形状モデルを作製するためにはどうすれば良いでしょうか。
##### 2 CommentsShow 1 older commentHide 1 older comment

それぞれの三次元データは8✕5行列の格子状に配置にされています。

Sign in to comment.

### Accepted Answer

とそう思ってCSVのデータプロットしてみたらそうでもなかった。XY方向にも動きがあるんですね。こういうときはdelaunayがお手軽で便利です。
m1_1 = [ 358.05338, 430.87082, 826.53064 ];
m1_2 = [ 326.88449, 437.67047, 850.28442 ];
m1_3 = [ 289.87347, 433.9791, 856.91333 ];
m1_4 = [ 252.77789, 420.93857, 838.33868 ];
m1_5 = [ 236.10527, 406.71243, 805.83411 ];
m2_1 = [ 354.6514, 461.47131, 810.47113 ];
m2_2 = [ 323.91965, 471.54459, 837.18304 ];
m2_3 = [ 289.70773, 472.93338, 845.51227 ];
m2_4 = [ 252.55437, 462.20703, 827.73413 ];
m2_5 = [ 237.63062, 442.59842, 792.58661 ];
m3_1 = [ 347.18051, 497.32794, 794.21545 ];
m3_2 = [ 323.71375, 510.78693, 822.89734 ];
m3_3 = [ 287.95007, 514.03876, 832.8432 ];
m3_4 = [ 251.94568, 499.6821, 818.96051 ];
m3_5 = [ 238.07593, 476.57538, 776.11658 ];
m4_1 = [ 342.39886, 525.78735, 776.37512 ];
m4_2 = [ 322.71704, 550.37683, 807.2923 ];
m4_3 = [ 284.51257, 549.69696, 822.16364 ];
m4_4 = [ 245.24339, 539.22327, 803.24414 ];
m4_5 = [ 238.00352, 507.22263, 760.30524 ];
m5_1 = [ 337.84744, 547.58301, 748.3476 ];
m5_2 = [ 323.07324, 579.12714, 779.57544 ];
m5_3 = [ 284.36349, 600.61273, 791.66931 ];
m5_4 = [ 242.84502, 573.34869, 772.87305 ];
m5_5 = [ 239.48238, 532.96143, 737.95685 ];
m6_1 = [ 343.68552, 561.8822, 716.70215 ];
m6_2 = [ 320.9787, 596.68811, 732.81891 ];
m6_3 = [ 287.44376, 609.18402, 748.54913 ];
m6_4 = [ 250.82326, 585.45685, 730.01233 ];
m6_5 = [ 241.52846, 548.89648, 711.6355 ];
m7_1 = [ 346.49258, 572.64832, 680.45886 ];
m7_2 = [ 322.8775, 599.43933, 690.47034 ];
m7_3 = [ 286.68451, 611.22833, 693.69623 ];
m7_4 = [ 258.4942, 586.58246, 687.50818 ];
m7_5 = [ 249.45985, 553.3764, 673.15729 ];
m8_1 = [ 349.63242, 573.29773, 644.07483 ];
m8_2 = [ 327.58649, 601.42102, 653.94299 ];
m8_3 = [ 291.32361, 610.70789, 658.89539 ];
m8_4 = [ 262.84415, 588.19733, 647.61121 ];
m8_5 = [ 249.68108, 557.64923, 638.48401 ];
mx = [
m1_1(1) m1_2(1) m1_3(1) m1_4(1) m1_5(1);
m2_1(1) m2_2(1) m2_3(1) m2_4(1) m2_5(1);
m3_1(1) m3_2(1) m3_3(1) m3_4(1) m3_5(1);
m4_1(1) m4_2(1) m4_3(1) m4_4(1) m4_5(1);
m5_1(1) m5_2(1) m5_3(1) m5_4(1) m5_5(1);
m6_1(1) m6_2(1) m6_3(1) m6_4(1) m6_5(1);
m7_1(1) m7_2(1) m7_3(1) m7_4(1) m7_5(1);
m8_1(1) m8_2(1) m8_3(1) m8_4(1) m8_5(1);
];
my = [
m1_1(2) m1_2(2) m1_3(2) m1_4(2) m1_5(2);
m2_1(2) m2_2(2) m2_3(2) m2_4(2) m2_5(2);
m3_1(2) m3_2(2) m3_3(2) m3_4(2) m3_5(2);
m4_1(2) m4_2(2) m4_3(2) m4_4(2) m4_5(2);
m5_1(2) m5_2(2) m5_3(2) m5_4(2) m5_5(2);
m6_1(2) m6_2(2) m6_3(2) m6_4(2) m6_5(2);
m7_1(2) m7_2(2) m7_3(2) m7_4(2) m7_5(2);
m8_1(2) m8_2(2) m8_3(2) m8_4(2) m8_5(2);
];
mz = [
m1_1(3) m1_2(3) m1_3(3) m1_4(3) m1_5(3);
m2_1(3) m2_2(3) m2_3(3) m2_4(3) m2_5(3);
m3_1(3) m3_2(3) m3_3(3) m3_4(3) m3_5(3);
m4_1(3) m4_2(3) m4_3(3) m4_4(3) m4_5(3);
m5_1(3) m5_2(3) m5_3(3) m5_4(3) m5_5(3);
m6_1(3) m6_2(3) m6_3(3) m6_4(3) m6_5(3);
m7_1(3) m7_2(3) m7_3(3) m7_4(3) m7_5(3);
m8_1(3) m8_2(3) m8_3(3) m8_4(3) m8_5(3);
];
T = delaunay(mx, my);
trisurf(T,mx,my,mz);
こんな感じであってますか？
4点で1面作るには4点が同一平面上にないと歪んでしまい、場合によってはまともに面が作れません。なので三角形で面を作成しています。
ところで「表面形状モデル」ということですが、形状データをファイル出力して別ソフトに読ませるなどの利用ですか？それともプロットまでのことを指していますか？
##### 2 CommentsShow 1 older commentHide 1 older comment

ありがとうございました。

Sign in to comment.

### Categories

Find more on 表面プロットとメッシュ プロット in Help Center and File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!