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
|
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,:));
X=string(round(MilliIn*P(1)));
Y=string(-round(MilliIn*P(2)));
Str='\special{pa '+X+' '+Y+'}';
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=string(round(MilliIn*P(1)));
Y=string(-round(MilliIn*P(2)));
Str='\special{pa '+X+' '+Y+'}';
if Wfile=='default'
mprintf('%s',Str);
else
mfprintf(FID,'%s',Str);
end;
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=string(round(MilliIn*P(1)));
Y=string(-round(MilliIn*P(2)));
Str1='\special{pa '+X+' '+Y+'}';
Str2='\special{fp}';
if Wfile=='default'
mprintf('%s',Str1);
mprintf('%s',Str2);
else
mfprintf(FID,'%s',Str1);
mfprintf(FID,'%s',Str2);
end;
Mojisu=Mojisu+length(Str1)+length(Str2);
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
|