blob: a16a5a4dba3aa82fc52d04c9347bd7a2c4a3643c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// 08.08.22
// 09.10.25
// 09.10.26
// 09.10.27
// 09.10.29
function Out=MakeveLfaceL(VfL)
// Out format
// VeL Edge, Face num(as numlist), VeL num
// FL Face (Vertexs)
Eps=10^(-4);
Tmp=VfL($);
Tmp1=Tmp(1);
if type(Tmp1)==1
FvL=list(VfL);
else
FvL=VfL;
end;
EL=list(); FL=list();
for Nn=1:length(FvL)
Tmp=FvL(Nn);
VL=Tmp(1);
if length(VL)>0
FnL=Tmp(2);
FaceL=list();
for I=1:length(FnL)
Tmp1=FnL(I);
PtL=list();
for J=1:length(Tmp1)
Tmp2=Tmp1(J);
PtL(J)=VL(Tmp2);
end;
FaceL(I)=PtL;
end;
else
FaceL=list(Tmp(2));
end;
for I=1:length(FaceL)
Face=FaceL(I);
Face($+1)=Face(1);
FL($+1)=Face;
for J=1:length(Face)-1
Edge=list(Face(J),Face(J+1));
Flg=0;
for K=1:length(EL)
Tmp=EL(K);
Tmp1=Tmp(1);
Tmp2=norm(Edge(1)-Tmp1(1))+norm(Edge(2)-Tmp1(2));
Tmp3=norm(Edge(1)-Tmp1(2))+norm(Edge(2)-Tmp1(1));
if Tmp2<Eps | Tmp3<Eps
Tmp=EL(K);
Tmp1=Tmp(1);
Tmp2=[Tmp(2),length(FL)];
EL(K)=list(Tmp1,Tmp2,K);
Flg=1;
break;
end;
end;
if Flg==0
Ntmp=length(EL);
EL(Ntmp+1)=list(Edge,[length(FL)],Ntmp+1);
end;
end;
end;
end;
Out=list(EL,FL);
endfunction
|