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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
//
// 11.05.26 (for pdflatex)
function Makehasen(Figdata,Sen,Gap,Ptn)
global Wfile FID;
Eps=10.0^(-6);
Clist=MakeCurves(Figdata);
DinM=Dataindex(Clist);
for N=1:size(DinM,1)
Tmp=DinM(N,:);
Data=Clist(Tmp(1):Tmp(2),:);
Dtall=size(Data,1);
Len=0;
Lenlist=[0];
for I=2:Dtall
Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
Lenlist=[Lenlist,Len];
end
Lenall=Lenlist(Dtall);
if Lenall==0
continue
end
Kari=(Sen+Gap)*0.1;
Naga=Sen*0.1;
Tobi=Gap*0.1;
if Vecnagasa(Data(1,:)-Data(Dtall,:))<Eps
Nsen=max(ceil(Lenall/Kari),3);
SegUnit=Lenall/Nsen;
Naga=SegUnit*Sen/(Sen+Gap);
Tobi=SegUnit*Gap/(Sen+Gap);
SegList=[0:SegUnit:(Nsen-1)*SegUnit];
else
if Ptn==0
Nsen=max(ceil((Lenall+Tobi)/Kari),3);
SegUnit=Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap);
Naga=SegUnit*Sen/(Sen+Gap);
Tobi=SegUnit*Gap/(Sen+Gap);
SegList=[0:SegUnit:(Nsen-1)*SegUnit];
else
Nsen=max(ceil((Lenall+Naga)/Kari),3);
SegUnit=Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap);
Naga=SegUnit*Sen/(Sen+Gap);
Tobi=SegUnit*Gap/(Sen+Gap);
SegList=[Tobi:SegUnit:Tobi+(Nsen-2)*SegUnit];
end
end
Hajime=1; Owari=1;
Mojisu=0;
for I=1:length(SegList)
Len=SegList(I);
J=Owari;
while Len>=Lenlist(J)-Eps
if J==Dtall
break
end
J=J+1;
end
Hajime=J-1;
J=Hajime;
while Len+Naga>Lenlist(J)-Eps
if J==Dtall
break
end
J=J+1
end
Owari=J-1;
T=(Len-Lenlist(Hajime))...
/(Lenlist(Hajime+1)-Lenlist(Hajime));
P=Data(Hajime,:)+T*(Data(Hajime+1,:)-Data(Hajime,:));
X0=sprintf('%5.5f',P(1));
Y0=sprintf('%5.5f',P(2));
Pt0='('+X0+','+Y0+')';
Str='\polyline'+Pt0;
if Wfile=='default'
mprintf('%s',Str);
else
mfprintf(FID,'%s',Str);
end;
Mojisu=Mojisu+length(Str);
for J=Hajime+1:Owari
P=Data(J,:);
X=sprintf('%5.5f',P(1));
Y=sprintf('%5.5f',P(2));
Pt='('+X+','+Y+')';
Str=Pt;
if Wfile=='default'
mprintf('%s',Str);
else
mfprintf(FID,'%s',Str);
end;
Pt0=Pt;
Mojisu=Mojisu+length(Str);
end;
T=(Len+Naga-Lenlist(Owari))...
/(Lenlist(Owari+1)-Lenlist(Owari));
P=Data(Owari,:)+T*(Data(Owari+1,:)-Data(Owari,:));
X=sprintf('%5.5f',P(1));
Y=sprintf('%5.5f',P(2));
Pt='('+string(X)+','+string(Y)+')';
Str=Pt;
if Wfile=='default'
mprintf('%s',Str);
else
mfprintf(FID,'%s',Str);
end;
Mojisu=Mojisu+length(Str);
if Mojisu>80
if Wfile=='default'
mprintf('%s\n','%');
else
mfprintf(FID,'%s\n','%');
end;
Mojisu=0;
end
end
end
if Wfile=='default'
mprintf('%s\n%s\n','%','%');
else
mfprintf(FID,'%s\n%s\n','%','%');
end;
endfunction
|