summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.sci
blob: 7e24efcb395ab5fbf099c0d56df98d15600d7604 (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
// 08.10.24
// 08.10.25
// 08.10.26
// 08.10.27
// 09.06.02
// 09.12.31 (gsort)

function Out=Crvsfpersdata(varargin)
  global PARTITIONPT HIDDENDATA CRVSFHIDDENDATA
  Nargs=length(varargin);
  Sepflg=0;
  Tmp=varargin(Nargs);
  if type(Tmp)==1 & Tmp<=0
    Sepflg=1;
    Nargs=Nargs-1;
  end;
  Fk=varargin(1);
  if Mixtype(Fk)==1
    FkL=Mix(Fk);
  else
    FkL=Fk;
  end;
  Fbdy=Projpers(varargin(2));
  Fd=varargin(3); N=4;
  FdL=Fullformfunc(Fd);
  Fxy=Mixop(1,FdL);
  Np=[50,50];
  if Nargs>=N
    Np=varargin(N); N=N+1;
    if type(Np)==1 & length(Np)==1
      Np=[Np,Np];
    end;
  end;
  Eps=[0.05,1];  //
  if Nargs>=N
    Eps=varargin(N);
  end;
  if length(Eps)==1 //
   Eps=[Eps,1]; //
  end;  //
  Eps2=0.2;
  if Nargs>=N+1
    Eps2=varargin(N+1);
  end;
  Tmp=Mixop(2,Fd);
  K=mtlb_findstr(Tmp,'=');
  Xname=part(Tmp,1:K-1);
  Tmp=Mixop(3,Fd);
  K=mtlb_findstr(Tmp,'=');
  Yname=part(Tmp,1:K-1);
  Out=[];
  CRVSFHIDDENDATA=[];
  for Nn=1:Mixlength(FkL)
    Fk=Mixop(Nn,FkL);
    Tmp=Projpers(Fk);
    Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
    if Sepflg==0
      for I=1:Numptcrv(Fk)-1
        Pa=Ptcrv(I,Fk);
        Pb=Ptcrv(I+1,Fk);
        PtL=Meetpoints(Pa,Pb,Fd,1,Np,Eps(1));  //
        for J=1:Mixlength(PtL)
          Tmp=Mixop(J,PtL);
          Tmp=Perspt(Tmp);
          Tmp1=ParamonCurve(Tmp,I,Projpers(Fk));
          Tmp2=min(abs(Par-Tmp1));
          if Tmp2*norm(Perspt(Pb-Pa))>Eps(1) //
            Par=[Par,Tmp1];
          end;
        end;
        Par=gsort(Par);
        Par=Par(length(Par):-1:1);
      end;
    end;
    Tmp1=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
    Out=Mixjoin(Out,Tmp1);
    CRVSFHIDDENDATA=Mixjoin(CRVSFHIDDENDATA,HIDDENDATA);
  end;
endfunction;