buildmesh() を使ってメッシュを作ることが出来る。
mesh 名前 = buildmesh(境界の名前(分割の指定));
border C(t=0,2*pi) { x=cos(t); y=sin(t); } int C0=1; border Gamma1(t=0,pi) { x=cos(t); y=sin(t); label=C0; } border Gamma2(t=pi,2*pi) { x=cos(t); y=sin(t); label=C0; } border C1(t=0,1) { x=t; y=0; } border C2(t=0,1) { x=1; y=t; } border C3(t=0,1) { x=1-t; y=1; } border C4(t=0,1) { x=0; y=1-t; } mesh Th1=buildmesh(C(50)); mesh Th2=buildmesh(Gamma1(25)+Gamma2(50)); mesh Th3=buildmesh(C1(20)+C2(20)+C3(20)+C4(20)); plot(Th1,wait=true,ps="Th1.eps"); plot(Th2,wait=true,ps="Th2.eps"); plot(Th3,wait=true,ps="Th3.eps"); |
有限個のJordan閉曲線で囲まれた多重連結領域を三角形分割することもできる。
sampleMesh.edp |
border a(t=0,2*pi){ x=cos(t); y=sin(t);label=1;} border b(t=0,2*pi){ x=0.3+0.3*cos(t); y=0.3*sin(t);label=2;} plot(a(50)+b(+30),wait=true,ps="border.eps"); mesh ThWithoutHole = buildmesh(a(50)+b(+30)); mesh ThWithHole = buildmesh(a(50)+b(-30)); plot(ThWithoutHole,wait=1,ps="Thwithouthole.eps"); plot(ThWithHole,wait=1,ps="Thwithhole.eps"); |