summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketcindy/ketlib/ketpic2escifiles6/Makehasen.sci
blob: 3f768e87ad450f649af069999a3f1949cd6c6112 (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
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