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
|