summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.sci
blob: 253d5d75d9520fe15369c19770ce4ac1e75726df (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
124
// 08.05.21
// 08.11.26
// 09.12.24 (Revised)
// 09.12.29
// 10.01.02
// 11.05.27

function Dottedline(varargin)
  global Wfile FID MilliIn PenThick PenThickInit
  Nall=length(varargin);
  Nagasa=0.1;
  Ookisa=PenThick;
  I=Nall;
  Tmp=varargin(I);
  while type(Tmp)==1 & length(Tmp)==1
    I=I-1;
    Tmp=varargin(I);
  end
  if I==Nall-1
    Nagasa=Nagasa*varargin(Nall);
    Nall=Nall-1;
  end
  if I==Nall-2
    Nagasa=Nagasa*varargin(Nall-1);
    Ookisa=Ookisa*varargin(Nall);
    Nall=Nall-2;
  end
  Nagasa=1000/2.54/MilliIn*Nagasa;
  Ra=Ookisa/MilliIn;
  for N=1:Nall
    Tmp=varargin(N);
	Pdata=Flattenlist(Tmp); //
    for II=1:length(Pdata)
      Clist=MakeCurves(Op(II,Pdata));
      DinM=Dataindex(Clist);
      Mojisu=0;
      for n=1:size(DinM,1)
        Tmp=DinM(n,:);
        Data=Clist(Tmp(1):Tmp(2),:);
        Len=0;
        Lenlist=[0];
        for I=2:size(Data,1)
          Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
          Lenlist=[Lenlist,Len];
        end
        Lenall=Lenlist(length(Lenlist));
        if Lenall==0
          continue
        end
        Naga=Nagasa;
        Nten=round(Lenall/Naga)+1;
        if Nten>1
          Seg=Lenall/(Nten-1);
        else
          Seg=Lenall;
        end
        Eps=10^(-6)*Seg;
        PPd=[];
        Hajime=1;
        for I=0:Nten-1
          Len=Seg*I;
          if I>0
            J=Hajime;
            while Len>=Lenlist(J)+Eps
              J=J+1;
            end
            Hajime=J-1;
          end
          T=(Len-Lenlist(Hajime))...
            /(Lenlist(Hajime+1)-Lenlist(Hajime));
          P=Data(Hajime,:)+T*(Data(Hajime+1,:)...
            -Data(Hajime,:));
          PPd=[PPd;P];
          if I==Nten-1
            if norm(P-Data(1,:))<Eps
              continue
            end
          end
        end
        for I=1:size(PPd,1)
          P=PPd(I,:);
          if size(PPd,1)==1
            V=[1,0];
          elseif I==1
            Tmp=PPd(I+1,:)-P;
            V=1/norm(Tmp)*Tmp;
          elseif I==size(PPd,1)
            Tmp= P-PPd(I-1,:);
            V=1/norm(Tmp)*Tmp;
          else
            Tmp1=PPd(I+1,:)-P;
            Tmp2=P-PPd(I-1,:);
            Tmp3=1/norm(Tmp1)*Tmp1+1/norm(Tmp2)*Tmp2;
            V=1/norm(Tmp3)*Tmp3;
          end;
          X=sprintf('%5.5f',P(1));
          Y=sprintf('%5.5f',P(2));
          Str='\put('+X+','+Y+'){\circle*{'+sprintf('%6.6f',Ra)+'}}';
          if Wfile=='default'    
            mprintf('%s',Str);
          else
            mfprintf(FID,'%s',Str);
          end
          Mojisu=Mojisu+length(Str);
          if Mojisu>80
            if Wfile=='default'
              mprintf('%c\n','%');
            else
              mfprintf(FID,'%c\n','%');
            end
            Mojisu=0;
          end
        end
      end
    end;
	if Mojisu>0
      if Wfile=='default'
        mprintf('%c\n','%');
      else
        mfprintf(FID,'%c\n','%');
      end;
    end;
  end;
endfunction;