制約付きドローネ三角形分割

6 vues (au cours des 30 derniers jours)
koba
koba le 21 Sep 2019
Commenté : Kenta le 22 Sep 2019
1枚目の写真のような赤い線と丸で作られた図形と点(*)があります。
これをドローネ三角形分割したら2枚目の写真のような結果になりました。
赤い線と丸で作られた図形の形を崩さないようにドローネ三角形分割するにはどのようにすれば良いですか?
2枚目の写真では赤い斜め線をまたいで三角形分割されているので、赤い斜め線をまたがないようにしたいです。
%6角形
ROKUKAKU=[
386.9039 201.9076
427.7949 192.7330
440.2949 152.7330
411.9039 121.9076
371.0128 131.0823
358.5128 171.0823
386.9039 201.9076
];
plot(ROKUKAKU(:,1),ROKUKAKU(:,2),'-o','Color','r');
daspect([1 1 1])
%斜め線
KI=[
450.0000 0
425.0000 80.0000
437.5000 40.0000
400.0000 160.0000
];
hold on
plot(KI(:,1),KI(:,2),'-o','Color','r')
MAWARI=[
300 0
300 100
300 200
300 300
400 0
400 300
500 0
500 300
600 0
600 100
600 200
600 300
];
plot(MAWARI(:,1),MAWARI(:,2),'*')
TUIKA=[
320.5000 0.5000
320.5000 64.5000
320.5000 128.5000
320.5000 160.5000
320.5000 192.5000
320.5000 256.5000
352.5000 128.5000
352.5000 192.5000
384.5000 0.5000
384.5000 32.5000
384.5000 64.5000
384.5000 96.5000
384.5000 224.5000
384.5000 256.5000
416.5000 0.5000
416.5000 32.5000
416.5000 64.5000
416.5000 96.5000
416.5000 224.5000
416.5000 256.5000
448.5000 64.5000
448.5000 96.5000
448.5000 128.5000
448.5000 192.5000
448.5000 224.5000
448.5000 256.5000
480.5000 0.5000
480.5000 32.5000
480.5000 64.5000
512.5000 32.5000
512.5000 64.5000
512.5000 128.5000
512.5000 192.5000
512.5000 256.5000
576.5000 0.5000
576.5000 64.5000
576.5000 128.5000];
plot(TUIKA(:,1),TUIKA(:,2),'*')
%三角形分割
DX=[ROKUKAKU(:,1);KI(:,1);MAWARI(:,1);TUIKA(:,1)];
DY=[ROKUKAKU(:,2);KI(:,2);MAWARI(:,2);TUIKA(:,2)];
dt=delaunayTriangulation(DX,DY);
hold off
plot(ROKUKAKU(:,1),ROKUKAKU(:,2),'-o','Color','r');
hold on
daspect([1 1 1])
plot(KI(:,1),KI(:,2),'-o','Color','r')
plot(MAWARI(:,1),MAWARI(:,2),'o')
plot(TUIKA(:,1),TUIKA(:,2),'*')
triplot(dt,'b')
a.jpg b.jpg

Réponse acceptée

Kenta
Kenta le 21 Sep 2019
%%%のコメントにあるように、制約をつければ、赤い線をまたがずになりましたが、これで望む結果が得られていますでしょうか。
clear;clc;close all
%6角形
ROKUKAKU=[
386.9039 201.9076
427.7949 192.7330
440.2949 152.7330
411.9039 121.9076
371.0128 131.0823
358.5128 171.0823
386.9039 201.9076
];
plot(ROKUKAKU(:,1),ROKUKAKU(:,2),'-o','Color','r');
daspect([1 1 1])
%斜め線
KI=[
450.0000 0
425.0000 80.0000
437.5000 40.0000
400.0000 160.0000
];
hold on
plot(KI(:,1),KI(:,2),'-o','Color','r')
MAWARI=[
300 0
300 100
300 200
300 300
400 0
400 300
500 0
500 300
600 0
600 100
600 200
600 300
];
plot(MAWARI(:,1),MAWARI(:,2),'*')
TUIKA=[
320.5000 0.5000
320.5000 64.5000
320.5000 128.5000
320.5000 160.5000
320.5000 192.5000
320.5000 256.5000
352.5000 128.5000
352.5000 192.5000
384.5000 0.5000
384.5000 32.5000
384.5000 64.5000
384.5000 96.5000
384.5000 224.5000
384.5000 256.5000
416.5000 0.5000
416.5000 32.5000
416.5000 64.5000
416.5000 96.5000
416.5000 224.5000
416.5000 256.5000
448.5000 64.5000
448.5000 96.5000
448.5000 128.5000
448.5000 192.5000
448.5000 224.5000
448.5000 256.5000
480.5000 0.5000
480.5000 32.5000
480.5000 64.5000
512.5000 32.5000
512.5000 64.5000
512.5000 128.5000
512.5000 192.5000
512.5000 256.5000
576.5000 0.5000
576.5000 64.5000
576.5000 128.5000];
plot(TUIKA(:,1),TUIKA(:,2),'*')
%三角形分割
%%%%%%%%% ここが変更点です
KI_sorted=sortrows(KI,2);
DX=[KI_sorted(:,1);ROKUKAKU(:,1);MAWARI(:,1);TUIKA(:,1)];
DY=[KI_sorted(:,2);ROKUKAKU(:,2);MAWARI(:,2);TUIKA(:,2)];
Cons=[[1:size(KI,1)]',[1:size(KI,1)]'+1];
Cons(end,2)=1;
dt=delaunayTriangulation([DX,DY],Cons);
%%%%%%%% ここまで
hold off
plot(ROKUKAKU(:,1),ROKUKAKU(:,2),'-o','Color','r');
hold on
daspect([1 1 1])
plot(KI(:,1),KI(:,2),'-o','Color','r')
plot(MAWARI(:,1),MAWARI(:,2),'o')
plot(TUIKA(:,1),TUIKA(:,2),'*')
triplot(dt,'b')
  4 commentaires
koba
koba le 22 Sep 2019
亀裂のある板のFEM解析をしようとしています。この図でいうと赤の斜め線が亀裂を表現しています。なので亀裂をまたがないように三角形分割をしたかったです。
Kenta
Kenta le 22 Sep 2019
内容を教えていただき、ありがとうございます。興味深いですね。また、分割のことでなにかございましたら、ご連絡ください。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Delaunay 三角形分割 dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!