diff options
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci')
-rwxr-xr-x | texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci new file mode 100755 index 00000000..4d7863b1 --- /dev/null +++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci @@ -0,0 +1,50 @@ +// 08.07.11 +// 08.08.17 +// 09.10.31 +// 09.11.12 + +function Out=Invparapt(varargin) + Eps=10^(-4); + Fk=varargin($); + NFk=Numptcrv(Fk) + Tmp=varargin(1); + if type(Tmp)==1 & size(Tmp)==1 + Ph=Tmp; + Fh=varargin(2); + else + Fh=Projpara(Fk); + if NFk>2 + Tmp1=Nearestpt(Tmp,Fh); + Ph=Tmp1(2); + else + Ah=Ptcrv(1,Fh); Bh=Ptcrv(2,Fh); + V1=Tmp-Ah; V2=Bh-Ah; + Tmp1=Crossprod(V1,V2); + if abs(Tmp1)>Eps + disp('Not on the line'); + Out=[]; + return; + else + Ph=Dotprod(V1,V2)/norm(V2)^2+1; // 09.11.12 + end; + end; + end; + if NFk>2 + N=Trunc(Ph); + S0=Ph-N; + if Ph>Numptcrv(Fh)-Eps + Out=list(Ptend(Fk),Numptcrv(Fh)); + return; + end; + else + N=1; + S0=Ph-1; // 09.11.12 + end; + Ak=Ptcrv(N,Fk); Bk=Ptcrv(N+1,Fk); + Ah=Ptcrv(N,Fh); Bh=Ptcrv(N+1,Fh); + Ph=(1-S0)*Ah+S0*Bh; + T2=S0; + Pk=(1-T2)*Ak+T2*Bk; + Out=list(Pk,N+T2); +endfunction + |