summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci50
1 files changed, 50 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci
new file mode 100755
index 00000000..4d7863b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/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
+