summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.sci
blob: 15543b8a33f92c5a1706bc65e6efff36c3e9600b (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// s : 2014.06.22
// e : 2014.07.18
//   Objsurf, Objthicksurf : Range argments changed
// 2014.09.07 Objjoin added

function Out=Objsurf(varargin)
  global OBJFIGNO OBJJOIN
  Args=varargin;
  Nargs=length(Args);
   Sel=Args(Nargs); Nargs=Nargs-1;
  Rf=Args(1);
  N=2;
  Mg=0; Ng=0;
  if type(Args(N))==1 then
    if length(Args(N))>2 then
      U=Args(N);
      Mg=length(U)-1;
      N=N+1;
    elseif length(Args(N))==2 then
      Intab=Args(N);
      Ag=Intab(1); Bg=Intab(2);
      N=N+1;
    else
      Ag=Args(N); Bg=Args(N+1);
      N=N+2;
    end;
  else // when type(Args(N))==10
    Tmp0=Args(N);
    Tmp=mtlb_findstr("=",Tmp0);
    if length(Tmp)>0 then
      Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
    end;
    Intab=evstr(Tmp0);
    Ag=Intab(1); Bg=Intab(2);
    N=N+1;
  end;
  if type(Args(N))==1 then
    if length(Args(N))>2 then
      V=Args(N);
      Ng=length(V)-1;
      N=N+1;
    elseif length(Args(N))==2 then
      Intab=Args(N);
      Cg=Intab(1); Dg=Intab(2);
      N=N+1;
    else
      Cg=Args(N); Dg=Args(N+1);
      N=N+2;
    end;
  else // when type(Args(N))==10
    Tmp0=Args(N);
    Tmp=mtlb_findstr("=",Tmp0);
    if length(Tmp)>0 then
      Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
    end;
    Intab=evstr(Tmp0);
    Cg=Intab(1); Dg=Intab(2);
    N=N+1;
  end;  
  if Mg==0 then
    Mg=Args(N);
    N=N+1;
	U=[];
    for J=1:(Mg+1)
      U=[U,Ag+(J-1)/Mg*(Bg-Ag)];
    end;
  end;
  if Ng==0 then
    Ng=Args(N);
    V=[];
    for K=1:(Ng+1)
      V=[V,Cg+(K-1)/Ng*(Dg-Cg)];
    end;
  end;
  Objname();  // // 140907
  PL=list();
  for J=1:(Mg+1)
    for K=1:(Ng+1)
      P=Rf(U(J),V(K));
      Np=Writeobjpoint(P)
      PL=lstcat(PL,list([P,Np]));
    end;
  end;
  Idx=1:(Ng+1):(Ng+1)*Mg+1;
  Pus=Mixsub(Idx,PL);
  Idx=(Ng+1):(Ng+1):(Ng+1)*(Mg+1);
  Pue=Mixsub(Idx,PL);
  Idx=1:1:Ng+1;
  Pvs=Mixsub(Idx,PL);
  Idx=(Ng+1)*Mg+1:1:(Ng+1)*(Mg+1);
  Pve=Mixsub(Idx,PL);
  Printobjstr("vt 0 0");
  Printobjstr("vt 1 0");
  Printobjstr("vt 1 1");
  Printobjstr("vt 0 1");
  for J=1:Mg
    for K=1:Ng
      P1=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K)))
      P2=sprintf("%1d",Op(4,PL((Ng+1)*J+K)))
      P3=sprintf("%1d",Op(4,PL((Ng+1)*J+K+1)))
      P4=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K+1)))
      N1=""; N2=""; N3=""; N4="";
      if Sel=="+" then // 6.22
        Str="f "+P1+"/1/"+N1+" "+P2+"/2/"+N2+" ";
        Str=Str+P3+"/3/"+N3+" "+P4+"/4/"+N4;
      else
        Str="f "+P1+"/1/"+N1+" "+P4+"/4/"+N4+" ";
        Str=Str+P3+"/3/"+N3+" "+P2+"/2/",N2;
      end;
      Printobjstr(Str)
    end;
  end;
  Out=list(U,V,Pus,Pue,Pvs,Pve)
endfunction