summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.sci
blob: 2abe8c905f538e057e4f5eccf3e68a32547e9bc9 (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
// 08.09.09
// 08.09.10
// 08.09.24

function PlotL=Connectseg(varargin)
  Nargs=length(varargin);
  Pdata=varargin(1);
  Eps=10^(-5);
  if Nargs>=2
    Eps=varargin(2)
  end;
  if Mixtype(Pdata)~=1
    Tmp=Mixop(1,Pdata);
    Tmp=size(Tmp,2);
    Sep=%inf*ones(1,Tmp);
    Tmp=[];
    for I=1:Mixlength(Pdata)
      Tmp1=Mixop(I,Pdata);
      Tmp=[Tmp;Sep;Tmp1];
    end;
    Pdata=Tmp(2:size(Tmp,1),:);
  end;
  Din=Dataindex(Pdata);
  PlotL=[];
  Qd=Pdata(Din(1,1):Din(1,2),:);
  Din=Din(2:size(Din,1),:);
  N=size(Din,1);
  while N>0
    Ah=Qd(1,:);Ao=Qd(size(Qd,1),:);
    Flg=0;
    for J=1:N
      St=Din(J,1);
      En=Din(J,2);
      P=Pdata(St,:);
      Q=Pdata(En,:);
      if norm(P-Ao)<Eps
        Tmp=Pdata(St+1:En,:);
        Qd=[Qd;Tmp];
        Din=[Din(1:J-1,:);Din(J+1:N,:)];
        Flg=1;
        break;
      end;
      if norm(Q-Ao)<Eps
        Tmp=Pdata(En-1:-1:St,:);
        Qd=[Qd;Tmp];
        Din=[Din(1:J-1,:);Din(J+1:N,:)];
        Flg=1;
        break;
      end;
      if norm(P-Ah)<Eps
        Tmp=Pdata(En:-1:St+1,:);
        Qd=[Tmp;Qd];
        Din=[Din(1:J-1,:);Din(J+1:N,:)];
        Flg=1;
        break;
      end;
      if norm(Q-Ah)<Eps
        Tmp=Pdata(St:En-1,:);
        Qd=[Tmp;Qd];
        Din=[Din(1:J-1,:);Din(J+1:N,:)];
        Flg=1;
        break;
      end;
    end;
    if Flg==0
      PlotL=Mixadd(PlotL,Qd);
      Qd=Pdata(Din(1,1):Din(1,2),:);
      Din=Din(2:N,:);
    end;
    N=size(Din,1);
  end;
  if size(Qd,1)>0
    PlotL=Mixadd(PlotL,Qd);
  end;
endfunction