summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci49
1 files changed, 49 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci
new file mode 100755
index 00000000..27e70d48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci
@@ -0,0 +1,49 @@
+//
+// 08.08.24
+// 10.01.02
+
+function Out=MakeBowdata(PA,PB,H)
+ global BOWSTART BOWEND
+ BOWSTART=PA;
+ BOWEND=PB;
+ Eps=10^(-5);
+ D=1/2*Vecnagasa(PB-PA);
+ R=(H^2+D^2)/(2*H);
+ A1=PA(1); A2=PA(2);
+ B1=PB(1); B2=PB(2);
+ if abs(A2-B2)>Eps
+ x=poly(0,'X');
+ y=-(A1-B1)*x/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2);
+ Eq1=(A1-x)^2+(A2-y)^2-R^2;
+ Tmp=coeff(Eq1);
+ C0=Tmp(1); C1=Tmp(2); C2=Tmp(3);
+ Det=sqrt(C1^2-4*C0*C2);
+ Ansx1=(-C1+Det)/(2*C2);
+ Ansx2=(-C1-Det)/(2*C2);
+ Tmp=horner(y,Ansx1);
+ PC=[Ansx1,Tmp];
+ Tmp=horner(y,Ansx2);
+ PC2=[Ansx2,Tmp];
+ else
+ Tmp=0.5*(PA+PB);
+ PC=Tmp+[0,R-H];
+ PC2=Tmp-[0,R-H];
+ end;
+ VA=PA-PC;
+ VB=PB-PC;
+ if VA(1)*VB(2)-VA(2)*VB(1)<0
+ PC=PC2;
+ end
+ AngA=acos((PA(1)-PC(1))/R);
+ if PA(2)-PC(2)<0
+ AngA=-AngA;
+ end
+ AngB=acos((PB(1)-PC(1))/R);
+ if PB(2)-PC(2)<0
+ AngB=-AngB;
+ end
+ if AngA>AngB
+ AngB=AngB+2*%pi;
+ end
+ Out=Mixmake(PC,R,AngA,AngB);
+endfunction