summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.sci
blob: 836617871bdf9817165f4ae1550ad60d6e1e6997 (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
// 09.10.03

function Out=Paramoncrv(varargin)
  Eps=10^(-8);
  Nargs=length(varargin);
  P=varargin(1);
  Gdata=varargin(Nargs);
  if size(P,1)>1
    Tmp=P; P=Gdata; Gdata=Tmp;
  end;
  if Nargs==2
    Tmp=Nearestpt(P,Gdata);
    Out=Mixop(2,Tmp);
    return;
  end;
  N=varargin(2);
  PtL=Gdata;
  if N==size(PtL,1)
    Out=N;
  else
    Pa=PtL(N,:);
    Pb=PtL(N+1,:);
    V=Pb-Pa;
    W=P-Pa;
    D2=norm(V)^2;
    if D2<Eps
      Out=0;
      return;
    end;
    S=Dotprod(V,W)/D2;
    S=min(max(S,0),1);
    Out=N+S;
  end
endfunction