m×n行列で表現される表面形状の形状偏差

9 visualizzazioni (ultimi 30 giorni)
nito
nito il 22 Mar 2022
Commentato: nito il 28 Mar 2022
下図のように2次元配列で表現された2つの表面形状の形状偏差を計算したいと考えています.
(偏差は「形状Aの頂点→形状Bの面」または「形状Aの頂点→形状Bの頂点」間の符号付距離を想定してます)
何か良い方法はありますでしょうか?

Risposta accettata

Atsushi Ueno
Atsushi Ueno il 23 Mar 2022
Modificato: Atsushi Ueno il 23 Mar 2022
回答の例と図示は2次元で進めます。下記のグラフで一目瞭然と思います。3次元でも同じです。
x = (0:pi/20:pi)';
A = sin(x); % Aは正弦波(青い太線)
B = A + rand(size(x)) - 0.5; % BはAにランダムな偏差を乗せた波形(オレンジの太線)
plot(x,A,'o-',x,B,'o-','LineWidth',2); hold on;
[k,dist] = dsearchn([x A],[x B]);
dist = dist .* sign(B-A(k)); % 距離は符号無し⇒y軸方向の大小関係で符号をつける
line([x';x(k)'],[B';A(k)']); % 形状Aの頂点→形状Bの頂点に向け細線を引く
dist' % 偏差「形状Bの頂点→形状Aの頂点」間の符号付距離を想定してます)
ans = 1×21
0.2259 -0.1620 0.1144 0.0353 -0.2205 -0.1621 0.3297 0.1693 -0.0196 -0.3136 -0.1617 0.0585 0.2891 0.4660 -0.2704 0.1214 0.0969 0.0374 -0.3454 -0.0062 -0.0593
  7 Commenti
Atsushi Ueno
Atsushi Ueno il 26 Mar 2022
「最近傍の面」とは何でしょう。上記リンク先でいうとポリゴン間の最短距離を求める事でしょうか?
nito
nito il 28 Mar 2022
「点からの距離が最短になるポリゴンとその時の最短距離を求めたい」という意味です.「ある程度xyz座標の近い点が最短距離になるはずだ」という前提で,全探索ではなく,評価するポリゴンを絞って計算したいと考えています

Accedi per commentare.

Più risposte (1)

Hernia Baby
Hernia Baby il 22 Mar 2022
Modificato: Hernia Baby il 22 Mar 2022
点数が一緒であるなら、三平方の定理は使えませんか?
clc,clear;
[X,Y,Z] = peaks(50);
X1 = X + 0.1*randi([-1 1],size(X));
Y1 = Y + 0.1*randi([-1 1],size(Y));
Z1 = Z;
Z1(10:20,10:20) = Z1(10:20,10:20) + randi([-1,1],size(Z1(10:20,10:20)));
surf(X,Y,Z,'EdgeColor','none')
colormap('gray')
hold on
scatter3(X1,Y1,Z1,'red','x')
距離を算出して各格子点でどれだけ離れているかをプロットします
R = sqrt((X-X1).^2+(Y-Y1).^2+(Z-Z1).^2);
figure
surf(R,'EdgeColor','none')
view(2)
xlabel 'xの点数'
ylabel 'yの点数'
追記:符号
おそらくz軸で正負判定を決めているのでしょうか
それでしたら以下のようになります
R = R*sign(Z-Z1);
figure
surf(R,'EdgeColor','none')
view(2)
xlabel 'xの点数'
ylabel 'yの点数'

Categorie

Scopri di più su 計算幾何学 in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!