summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.sci
blob: 5157c1118123dd1e56b328165ddaed8389308882 (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// 08.05.22
// 08.05.31
// 09.08.12

function M=Bowmiddle(varargin)
  global BOWMIDDLE;
  Nargs=length(varargin);
  if Nargs==0
    M=BOWMIDDLE;
    return;
  end;
  if Nargs==1
    Bdata=varargin(1);
    A=Bdata(1,:);
    Dind=Dataindex(Bdata);
    Dc=size(Dind,1);
    Tmp=Dind(Dc,2);
    B=Bdata(Tmp,:);
    if Dc==1
      Tmp1=round(Tmp/2);
    else
      Tmp1=Dind(1,2);
    end;
    D=Bdata(Tmp1,:);
    B=B-A;
    D=D-A;
    Tmp1=B(1)*D(2)-D(1)*B(2);
    Tmp2=((B(1)^2+B(2)^2)*D(2)-B(2)*(D(1)^2+D(2)^2))/2;
    Tmp3=-((B(1)^2+B(2)^2)*D(1)-B(1)*(D(1)^2+D(2)^2))/2;
    C=[Tmp2,Tmp3]/Tmp1+A;
    R=norm(C-A);
    B=B+A;
    V=(A+B)/2-C;
    V=V/norm(V);
    M=C+R*V;
  else
    A=varargin(1); B=varargin(2);
    D=1/2*Vecnagasa(B-A);
    H=0.2*D;
    if length(varargin)>=3
      Tmp=varargin(3);
      H=Tmp*D*0.2;
    end
    H=min(H,D);
    Ydata=MakeBowdata(A,B,H);
    C=Op(1,Ydata);
    R=Op(2,Ydata);
    T=(Op(3,Ydata)+Op(4,Ydata))/2;
    P=C+R*[cos(T),sin(T)];
    M=MixS(P,T);
  end
endfunction