delaunay で求められる三角形の​頂点間の距離を計算す​るにはどうすればいい​ですか?

2 次查看(过去 30 天)
delaunay で求められる三角形の頂点間の距離を求める方法について教えて下さい。

采纳的回答

MathWorks Support Team
编辑:MathWorks Support Team 2020-9-23
DT = delaunay(x,y); より得られる DT から求めていく方法の場合、重複する辺などがあり、ソースコードや計算が煩雑化する可能性があります。
h = triplot(DT,x,y);
で一度グラフを描画し、戻り値 h にラインの情報が含まれますので、こちらを利用する方法が考えられます。
h.XData, h.YData は グラフ上の辺の数 x 3 の点群が定義されます。
h.YData には、 [x11,x12, NaN, x21,x22, NaN, x31,x32, NaN ]のように
h.YData には、 [y11,y12, NaN, y21,y22, NaN, y31,y32, NaN ]のように
定義されています。
3の倍数の要素番号には NaN が定義されますので、それ以外の 3*n-1, 3*n-2 の要素番号が一片のペアを示しますので、こちらを順に取得します。
一例としては以下のようになります。
% (x,y) 座標を定義
x = rand(20,1) * 10;
y = rand(20,1) * 10;
% delaunay三角形分割し、グラフ表示
DT = delaunay(x,y);
h = triplot(DT,x,y);
% グラフから xdata, ydata のペアを取得
xd = h.XData;
yd = h.YData;
% 各線の長さを計算 (+ グラフに長さ表示を上書き)
for n = 1:length(xd)/3
xz = xd(3*n-1)-xd(3*n-2);
yz = yd(3*n-1)-yd(3*n-2);
d(n) = norm([xz, yz]);
text( mean([xd(3*n-1),xd(3*n-2)]) ,mean([yd(3*n-1),yd(3*n-2)]), ['*',num2str(d(n))])
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Delaunay 三角形分割 的更多信息

标签

尚未输入任何标签。

产品

Community Treasure Hunt

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

Start Hunting!