summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci51
1 files changed, 51 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci
new file mode 100755
index 00000000..837a5727
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci
@@ -0,0 +1,51 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Reflectdata(varargin)
+ Nargs=length(varargin)
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ if Nargs==1
+ PtA=[0,0];PtB=PtA;
+ else
+ Pts=varargin(2);
+ if length(Pts)==2
+ PtA=Pts; PtB=PtA;
+ else
+ PtA=Pts(1,1:2); PtB=Pts(1,3:4);
+ end
+ end
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ if PtA==PtB
+ X2=2*PtA(1)-X1;
+ Y2=2*PtA(2)-Y1;
+ else
+ U=PtB(1)-PtA(1);
+ V=PtB(2)-PtA(2);
+ A=PtA(1);
+ B=PtA(2);
+ X2=(U^2-V^2)/(U^2+V^2)*X1+2*U*V/(U^2+V^2)*Y1-2*V*(U*B-V*A)/(U^2+V^2);
+ Y2=2*U*V/(U^2+V^2)*X1-(U^2-V^2)/(U^2+V^2)*Y1+2*U*(U*B-V*A)/(U^2+V^2);
+ end
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction;
+