1
2(PUT '|SCIFS;indexes;$L;1| '|SPADreplace| 'QCAR)
3
4(SDEFUN |SCIFS;indexes;$L;1|
5        ((|me| $) ($ |List| (|List| (|NonNegativeInteger|)))) (QCAR |me|))
6
7(PUT '|SCIFS;pointList;$L;2| '|SPADreplace| 'QCDR)
8
9(SDEFUN |SCIFS;pointList;$L;2| ((|me| $) ($ |List| PT)) (QCDR |me|))
10
11(SDEFUN |SCIFS;meshIndex|
12        ((|i| |Integer|) (|j| |Integer|) (|c| |Integer|)
13         ($ |NonNegativeInteger|))
14        (SPROG ((#1=#:G411 NIL))
15               (PROG1 (LETT #1# (+ (* |j| |c|) |i|))
16                 (|check_subtype2| (>= #1# 0) '(|NonNegativeInteger|)
17                                   '(|Integer|) #1#))))
18
19(SDEFUN |SCIFS;smesh;LB$;4|
20        ((|ptin| |List| (|List| PT)) (|clos| |Boolean|) ($ $))
21        (SPROG
22         ((|j| #1=(|NonNegativeInteger|))
23          (|in2| (|List| (|List| (|NonNegativeInteger|))))
24          (|thisLine| (|List| (|NonNegativeInteger|))) (|i| #1#)
25          (|pt2| (|List| PT)) (#2=#:G422 NIL) (|p| NIL) (#3=#:G421 NIL)
26          (|lpt| NIL) (|colLength| (|NonNegativeInteger|))
27          (|rowLength| (|NonNegativeInteger|)))
28         (SEQ (LETT |pt2| NIL) (LETT |in2| NIL)
29              (LETT |rowLength| (LENGTH |ptin|))
30              (LETT |colLength| (LENGTH (|SPADfirst| |ptin|))) (LETT |j| 0)
31              (SEQ (LETT |lpt| NIL) (LETT #3# |ptin|) G190
32                   (COND
33                    ((OR (ATOM #3#) (PROGN (LETT |lpt| (CAR #3#)) NIL))
34                     (GO G191)))
35                   (SEQ (LETT |i| 0)
36                        (SEQ (LETT |p| NIL) (LETT #2# |lpt|) G190
37                             (COND
38                              ((OR (ATOM #2#) (PROGN (LETT |p| (CAR #2#)) NIL))
39                               (GO G191)))
40                             (SEQ
41                              (LETT |pt2| (SPADCALL |pt2| |p| (QREFELT $ 12)))
42                              (COND
43                               ((> |i| 0)
44                                (COND
45                                 ((> |j| 0)
46                                  (SEQ
47                                   (LETT |thisLine|
48                                         (LIST
49                                          (|SCIFS;meshIndex| (- |i| 1)
50                                           (- |j| 1) |colLength| $)
51                                          (|SCIFS;meshIndex| |i| (- |j| 1)
52                                           |colLength| $)
53                                          (|SCIFS;meshIndex| |i| |j|
54                                           |colLength| $)
55                                          (|SCIFS;meshIndex| (- |i| 1) |j|
56                                           |colLength| $)))
57                                   (EXIT
58                                    (LETT |in2|
59                                          (SPADCALL |in2| |thisLine|
60                                                    (QREFELT $ 14)))))))))
61                              (EXIT (LETT |i| (+ |i| 1))))
62                             (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
63                        (COND
64                         (|clos|
65                          (COND
66                           ((> |j| 0)
67                            (SEQ
68                             (LETT |thisLine|
69                                   (LIST
70                                    (|SCIFS;meshIndex| (- |i| 1) (- |j| 1)
71                                     |colLength| $)
72                                    (|SCIFS;meshIndex| 0 (- |j| 1) |colLength|
73                                     $)
74                                    (|SCIFS;meshIndex| 0 |j| |colLength| $)
75                                    (|SCIFS;meshIndex| (- |i| 1) |j|
76                                     |colLength| $)))
77                             (EXIT
78                              (LETT |in2|
79                                    (SPADCALL |in2| |thisLine|
80                                              (QREFELT $ 14)))))))))
81                        (EXIT (LETT |j| (+ |j| 1))))
82                   (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
83              (EXIT (CONS |in2| |pt2|)))))
84
85(SDEFUN |SCIFS;singleFace;L$;5| ((|ptin| |List| PT) ($ $))
86        (SPROG
87         ((|in2| (|List| (|List| (|NonNegativeInteger|)))) (#1=#:G427 NIL)
88          (|i| NIL) (#2=#:G426 NIL) (|pt2| (|List| PT)))
89         (SEQ (LETT |pt2| |ptin|)
90              (LETT |in2|
91                    (LIST
92                     (PROGN
93                      (LETT #2# NIL)
94                      (SEQ (LETT |i| 0) (LETT #1# (- (LENGTH |ptin|) 1)) G190
95                           (COND ((|greater_SI| |i| #1#) (GO G191)))
96                           (SEQ (EXIT (LETT #2# (CONS |i| #2#))))
97                           (LETT |i| (|inc_SI| |i|)) (GO G190) G191
98                           (EXIT (NREVERSE #2#))))))
99              (EXIT (CONS |in2| |pt2|)))))
100
101(SDEFUN |SCIFS;subdivide;2$;6| ((|me| $) ($ $))
102        (SPROG
103         ((|indexSize| (|NonNegativeInteger|))
104          (|in2| (|List| (|List| (|NonNegativeInteger|))))
105          (|indexPos| (|NonNegativeInteger|))
106          (|newFace| (|List| (|NonNegativeInteger|))) (#1=#:G444 NIL) (|j| NIL)
107          (#2=#:G443 NIL) (#3=#:G442 NIL) (|ptIx| NIL) (|pt2| (|List| PT))
108          (|newPt| (PT)) (#4=#:G441 NIL) (#5=#:G440 NIL) (|faceIx| NIL)
109          (#6=#:G439 NIL) (|i| NIL) (#7=#:G438 NIL))
110         (SEQ (LETT |indexSize| (LENGTH (QCDR |me|)))
111              (LETT |pt2|
112                    (PROGN
113                     (LETT #7# NIL)
114                     (SEQ (LETT |i| 1) (LETT #6# |indexSize|) G190
115                          (COND ((|greater_SI| |i| #6#) (GO G191)))
116                          (SEQ
117                           (EXIT
118                            (LETT #7#
119                                  (CONS
120                                   (SPADCALL (QCDR |me|) |i| (QREFELT $ 20))
121                                   #7#))))
122                          (LETT |i| (|inc_SI| |i|)) (GO G190) G191
123                          (EXIT (NREVERSE #7#)))))
124              (LETT |in2| NIL)
125              (SEQ (LETT |faceIx| NIL) (LETT #5# (QCAR |me|)) G190
126                   (COND
127                    ((OR (ATOM #5#) (PROGN (LETT |faceIx| (CAR #5#)) NIL))
128                     (GO G191)))
129                   (SEQ (LETT |newPt| (SPADCALL 0 0 0 (QREFELT $ 21)))
130                        (SEQ (LETT |ptIx| NIL) (LETT #4# |faceIx|) G190
131                             (COND
132                              ((OR (ATOM #4#)
133                                   (PROGN (LETT |ptIx| (CAR #4#)) NIL))
134                               (GO G191)))
135                             (SEQ
136                              (EXIT
137                               (LETT |newPt|
138                                     (SPADCALL |newPt|
139                                               (SPADCALL |pt2| (+ |ptIx| 1)
140                                                         (QREFELT $ 20))
141                                               (QREFELT $ 22)))))
142                             (LETT #4# (CDR #4#)) (GO G190) G191 (EXIT NIL))
143                        (LETT |newPt|
144                              (SPADCALL
145                               (|div_DF_I| 1.0
146                                           (SPADCALL |faceIx| (QREFELT $ 24)))
147                               |newPt| (QREFELT $ 26)))
148                        (LETT |pt2| (SPADCALL |pt2| |newPt| (QREFELT $ 12)))
149                        (LETT |indexPos| 1)
150                        (SEQ (LETT |ptIx| NIL) (LETT #3# |faceIx|) G190
151                             (COND
152                              ((OR (ATOM #3#)
153                                   (PROGN (LETT |ptIx| (CAR #3#)) NIL))
154                               (GO G191)))
155                             (SEQ
156                              (LETT |newFace|
157                                    (PROGN
158                                     (LETT #2# NIL)
159                                     (SEQ (LETT |j| 1)
160                                          (LETT #1#
161                                                (SPADCALL |faceIx|
162                                                          (QREFELT $ 24)))
163                                          G190
164                                          (COND
165                                           ((|greater_SI| |j| #1#) (GO G191)))
166                                          (SEQ
167                                           (EXIT
168                                            (LETT #2#
169                                                  (CONS
170                                                   (SPADCALL |faceIx| |j|
171                                                             (QREFELT $ 27))
172                                                   #2#))))
173                                          (LETT |j| (|inc_SI| |j|)) (GO G190)
174                                          G191 (EXIT (NREVERSE #2#)))))
175                              (SPADCALL |newFace| |indexPos| |indexSize|
176                                        (QREFELT $ 28))
177                              (LETT |indexPos| (+ |indexPos| 1))
178                              (EXIT
179                               (LETT |in2|
180                                     (SPADCALL |in2| |newFace|
181                                               (QREFELT $ 14)))))
182                             (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
183                        (EXIT (LETT |indexSize| (+ |indexSize| 1))))
184                   (LETT #5# (CDR #5#)) (GO G190) G191 (EXIT NIL))
185              (EXIT (CONS |in2| |pt2|)))))
186
187(SDEFUN |SCIFS;sierpinskiDivide;$Nni$;7|
188        ((|me| $) (|level| |NonNegativeInteger|) ($ $))
189        (SPROG
190         ((#1=#:G456 NIL) (#2=#:G459 NIL) (|indexSize| (|NonNegativeInteger|))
191          (|in2| (|List| (|List| (|NonNegativeInteger|))))
192          (|index2| (|NonNegativeInteger|)) (|index1| (|NonNegativeInteger|))
193          (|newFace| (|List| #3=(|NonNegativeInteger|))) (|ix4| #3#)
194          (|ix3| #3#) (#4=#:G464 NIL) (|offset| NIL) (#5=#:G449 NIL)
195          (|pt2| (|List| PT)) (|newPt| (PT)) (|ix2| #3#)
196          (|ix1| (|NonNegativeInteger|)) (#6=#:G463 NIL) (#7=#:G462 NIL)
197          (|faceIx| NIL) (#8=#:G461 NIL) (|i| NIL) (#9=#:G460 NIL))
198         (SEQ
199          (EXIT
200           (SEQ (LETT |indexSize| (LENGTH (QCDR |me|)))
201                (LETT |pt2|
202                      (PROGN
203                       (LETT #9# NIL)
204                       (SEQ (LETT |i| 1) (LETT #8# |indexSize|) G190
205                            (COND ((|greater_SI| |i| #8#) (GO G191)))
206                            (SEQ
207                             (EXIT
208                              (LETT #9#
209                                    (CONS
210                                     (SPADCALL (QCDR |me|) |i| (QREFELT $ 20))
211                                     #9#))))
212                            (LETT |i| (|inc_SI| |i|)) (GO G190) G191
213                            (EXIT (NREVERSE #9#)))))
214                (LETT |in2| NIL)
215                (SEQ (LETT |faceIx| NIL) (LETT #7# (QCAR |me|)) G190
216                     (COND
217                      ((OR (ATOM #7#) (PROGN (LETT |faceIx| (CAR #7#)) NIL))
218                       (GO G191)))
219                     (SEQ
220                      (SEQ (LETT |offset| 1)
221                           (LETT #6# (SPADCALL |faceIx| (QREFELT $ 24))) G190
222                           (COND ((|greater_SI| |offset| #6#) (GO G191)))
223                           (SEQ (LETT |ix1| |offset|)
224                                (LETT |ix2| (+ |offset| 1))
225                                (COND
226                                 ((> |ix2| (SPADCALL |faceIx| (QREFELT $ 24)))
227                                  (LETT |ix2| 1)))
228                                (LETT |newPt|
229                                      (SPADCALL
230                                       (SPADCALL |pt2|
231                                                 (+
232                                                  (SPADCALL |faceIx| |ix1|
233                                                            (QREFELT $ 27))
234                                                  1)
235                                                 (QREFELT $ 20))
236                                       (SPADCALL |pt2|
237                                                 (+
238                                                  (SPADCALL |faceIx| |ix2|
239                                                            (QREFELT $ 27))
240                                                  1)
241                                                 (QREFELT $ 20))
242                                       (QREFELT $ 22)))
243                                (LETT |newPt|
244                                      (SPADCALL (|mk_DF| 5 -1) |newPt|
245                                                (QREFELT $ 26)))
246                                (EXIT
247                                 (LETT |pt2|
248                                       (SPADCALL |pt2| |newPt|
249                                                 (QREFELT $ 12)))))
250                           (LETT |offset| (|inc_SI| |offset|)) (GO G190) G191
251                           (EXIT NIL))
252                      (LETT |index1|
253                            (PROG1
254                                (LETT #5#
255                                      (- (SPADCALL |faceIx| (QREFELT $ 24)) 1))
256                              (|check_subtype2| (>= #5# 0)
257                                                '(|NonNegativeInteger|)
258                                                '(|Integer|) #5#)))
259                      (LETT |index2| 0)
260                      (SEQ (LETT |offset| 1)
261                           (LETT #4# (SPADCALL |faceIx| (QREFELT $ 24))) G190
262                           (COND ((|greater_SI| |offset| #4#) (GO G191)))
263                           (SEQ (LETT |ix3| (+ |indexSize| |index1|))
264                                (LETT |ix4| (+ |indexSize| |index2|))
265                                (LETT |newFace|
266                                      (LIST
267                                       (SPADCALL |faceIx| |offset|
268                                                 (QREFELT $ 27))
269                                       |ix3| |ix4|))
270                                (LETT |index1| (+ |index1| 1))
271                                (COND
272                                 ((EQL |index1|
273                                       (SPADCALL |faceIx| (QREFELT $ 24)))
274                                  (LETT |index1| 0)))
275                                (LETT |index2| (+ |index2| 1))
276                                (COND
277                                 ((EQL |index2|
278                                       (SPADCALL |faceIx| (QREFELT $ 24)))
279                                  (LETT |index2| 0)))
280                                (EXIT
281                                 (LETT |in2|
282                                       (SPADCALL |in2| |newFace|
283                                                 (QREFELT $ 14)))))
284                           (LETT |offset| (|inc_SI| |offset|)) (GO G190) G191
285                           (EXIT NIL))
286                      (EXIT
287                       (LETT |indexSize|
288                             (+ |indexSize|
289                                (SPADCALL |faceIx| (QREFELT $ 24))))))
290                     (LETT #7# (CDR #7#)) (GO G190) G191 (EXIT NIL))
291                (COND
292                 ((< |level| 1)
293                  (PROGN (LETT #2# (CONS |in2| |pt2|)) (GO #10=#:G458))))
294                (EXIT
295                 (SPADCALL (CONS |in2| |pt2|)
296                           (PROG1 (LETT #1# (- |level| 1))
297                             (|check_subtype2| (>= #1# 0)
298                                               '(|NonNegativeInteger|)
299                                               '(|Integer|) #1#))
300                           (QREFELT $ 30)))))
301          #10# (EXIT #2#))))
302
303(SDEFUN |SCIFS;listBranches|
304        ((|functions| |List|
305          (|Record| (|:| |source| (|Mapping| PT (|DoubleFloat|)))
306                    (|:| |ranges| (|List| (|Segment| (|DoubleFloat|))))
307                    (|:| |knots| (|List| (|DoubleFloat|)))
308                    (|:| |points| (|List| PT))))
309         ($ |List| (|List| PT)))
310        (SPROG ((|outList| (|List| (|List| PT))) (#1=#:G469 NIL) (|curve| NIL))
311               (SEQ (LETT |outList| NIL)
312                    (SEQ (LETT |curve| NIL) (LETT #1# |functions|) G190
313                         (COND
314                          ((OR (ATOM #1#) (PROGN (LETT |curve| (CAR #1#)) NIL))
315                           (GO G191)))
316                         (SEQ
317                          (EXIT
318                           (LETT |outList|
319                                 (CONS (QVELT |curve| 3) |outList|))))
320                         (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
321                    (EXIT |outList|))))
322
323(SDEFUN |SCIFS;orthog| ((|x| PT) (|y| PT) ($ PT))
324        (SPROG ((|a| (|DoubleFloat|)))
325               (SEQ
326                (COND
327                 ((SPADCALL (SPADCALL |x| |y| (QREFELT $ 36)) (QREFELT $ 31)
328                            (QREFELT $ 37))
329                  (LETT |y| (QREFELT $ 35))))
330                (COND
331                 ((SPADCALL (SPADCALL |x| |y| (QREFELT $ 36)) (QREFELT $ 31)
332                            (QREFELT $ 37))
333                  (LETT |y|
334                        (COND
335                         ((|less_DF|
336                           (SPADCALL |x| (QREFELT $ 32) (QREFELT $ 36))
337                           (QREFELT $ 31))
338                          (QREFELT $ 32))
339                         ('T (QREFELT $ 33))))))
340                (LETT |a|
341                      (|minus_DF|
342                       (|div_DF| (SPADCALL |x| |y| (QREFELT $ 38))
343                                 (SPADCALL |x| |x| (QREFELT $ 38)))))
344                (EXIT
345                 (SETELT $ 35
346                         (SPADCALL (SPADCALL |a| |x| (QREFELT $ 26)) |y|
347                                   (QREFELT $ 22)))))))
348
349(SDEFUN |SCIFS;poTriad|
350        ((|pl| PT) (|po| PT) (|pr| PT)
351         ($ |Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT)))
352        (SPROG ((|n| (PT)) (|pol| (PT)) (|t| (PT)))
353               (SEQ
354                (LETT |t|
355                      (SPADCALL (SPADCALL |pr| |pl| (QREFELT $ 39))
356                                (QREFELT $ 40)))
357                (LETT |pol| (SPADCALL |pl| |po| (QREFELT $ 39)))
358                (LETT |n|
359                      (SPADCALL (|SCIFS;orthog| |t| |pol| $) (QREFELT $ 40)))
360                (EXIT (VECTOR |t| |n| (SPADCALL |t| |n| (QREFELT $ 41)))))))
361
362(SDEFUN |SCIFS;curveTriads|
363        ((|l| |List| PT)
364         ($ |List| (|Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT))))
365        (SPROG
366         ((|endtriad|
367           #1=(|Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT)))
368          (|n| (PT)) (|t| (PT))
369          (|x| (|Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT)))
370          (|begtriad| #1#)
371          (|midtriads|
372           (|List| (|Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT))))
373          (#2=#:G487 NIL) (|pl| NIL) (#3=#:G488 NIL) (|po| NIL) (#4=#:G489 NIL)
374          (|pr| NIL) (#5=#:G486 NIL) (|triad| #1#) (|b| (PT))
375          (|k| (|NonNegativeInteger|)))
376         (SEQ (LETT |k| (LENGTH |l|))
377              (EXIT
378               (COND
379                ((< |k| 2)
380                 (|error| "Need at least 2 points to specify a curve"))
381                (#6='T
382                 (SEQ (SETELT $ 35 (QREFELT $ 34))
383                      (EXIT
384                       (COND
385                        ((EQL |k| 2)
386                         (SEQ
387                          (LETT |t|
388                                (SPADCALL
389                                 (SPADCALL (SPADCALL |l| (QREFELT $ 42))
390                                           (|SPADfirst| |l|) (QREFELT $ 39))
391                                 (QREFELT $ 40)))
392                          (LETT |n|
393                                (SPADCALL
394                                 (SPADCALL |t| (QREFELT $ 32) (QREFELT $ 39))
395                                 (QREFELT $ 40)))
396                          (LETT |b| (SPADCALL |t| |n| (QREFELT $ 41)))
397                          (LETT |triad| (VECTOR |t| |n| |b|))
398                          (EXIT (LIST |triad| |triad|))))
399                        (#6#
400                         (SEQ
401                          (LETT |midtriads|
402                                (PROGN
403                                 (LETT #5# NIL)
404                                 (SEQ (LETT |pr| NIL)
405                                      (LETT #4# (CDR (CDR |l|)))
406                                      (LETT |po| NIL) (LETT #3# (CDR |l|))
407                                      (LETT |pl| NIL) (LETT #2# |l|) G190
408                                      (COND
409                                       ((OR (ATOM #2#)
410                                            (PROGN (LETT |pl| (CAR #2#)) NIL)
411                                            (ATOM #3#)
412                                            (PROGN (LETT |po| (CAR #3#)) NIL)
413                                            (ATOM #4#)
414                                            (PROGN (LETT |pr| (CAR #4#)) NIL))
415                                        (GO G191)))
416                                      (SEQ
417                                       (EXIT
418                                        (LETT #5#
419                                              (CONS
420                                               (|SCIFS;poTriad| |pl| |po| |pr|
421                                                $)
422                                               #5#))))
423                                      (LETT #2#
424                                            (PROG1 (CDR #2#)
425                                              (LETT #3#
426                                                    (PROG1 (CDR #3#)
427                                                      (LETT #4# (CDR #4#))))))
428                                      (GO G190) G191 (EXIT (NREVERSE #5#)))))
429                          (LETT |x| (|SPADfirst| |midtriads|))
430                          (LETT |t|
431                                (SPADCALL
432                                 (SPADCALL (SPADCALL |l| (QREFELT $ 42))
433                                           (|SPADfirst| |l|) (QREFELT $ 39))
434                                 (QREFELT $ 40)))
435                          (LETT |n|
436                                (SPADCALL (|SCIFS;orthog| |t| (QVELT |x| 1) $)
437                                          (QREFELT $ 40)))
438                          (LETT |begtriad|
439                                (VECTOR |t| |n|
440                                        (SPADCALL |t| |n| (QREFELT $ 41))))
441                          (LETT |x| (SPADCALL |midtriads| (QREFELT $ 45)))
442                          (LETT |t|
443                                (SPADCALL
444                                 (SPADCALL (SPADCALL |l| |k| (QREFELT $ 20))
445                                           (SPADCALL |l| (- |k| 1)
446                                                     (QREFELT $ 20))
447                                           (QREFELT $ 39))
448                                 (QREFELT $ 40)))
449                          (LETT |n|
450                                (SPADCALL (|SCIFS;orthog| |t| (QVELT |x| 1) $)
451                                          (QREFELT $ 40)))
452                          (LETT |endtriad|
453                                (VECTOR |t| |n|
454                                        (SPADCALL |t| |n| (QREFELT $ 41))))
455                          (EXIT
456                           (CONS |begtriad|
457                                 (SPADCALL |midtriads| |endtriad|
458                                           (QREFELT $ 46)))))))))))))))
459
460(SDEFUN |SCIFS;cosSinInfo|
461        ((|n| |Integer|) ($ |List| (|List| (|DoubleFloat|))))
462        (SPROG
463         ((|ans| (|List| (|List| (|DoubleFloat|)))) (|angle| (|DoubleFloat|))
464          (#1=#:G494 NIL) (|i| NIL) (|theta| (|DoubleFloat|)))
465         (SEQ (LETT |ans| NIL)
466              (LETT |theta|
467                    (|div_DF_I|
468                     (SPADCALL 2 (FLOAT PI MOST-POSITIVE-DOUBLE-FLOAT)
469                               (QREFELT $ 48))
470                     |n|))
471              (SEQ (LETT |i| 1) (LETT #1# (- |n| 1)) G190
472                   (COND ((|greater_SI| |i| #1#) (GO G191)))
473                   (SEQ (LETT |angle| (SPADCALL |i| |theta| (QREFELT $ 49)))
474                        (EXIT
475                         (LETT |ans|
476                               (CONS
477                                (LIST (|cos_DF| |angle|) (|sin_DF| |angle|))
478                                |ans|))))
479                   (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
480              (EXIT |ans|))))
481
482(SDEFUN |SCIFS;loopPoints|
483        ((|ctr| PT) (|pNorm| PT) (|bNorm| PT) (|rad| |DoubleFloat|)
484         (|cosSin| |List| (|List| (|DoubleFloat|))) ($ |List| PT))
485        (SPROG
486         ((|pt| (PT)) (|ans| (|List| PT)) (|sin| (|DoubleFloat|))
487          (|cos| (|DoubleFloat|)) (|cossin| (|List| (|DoubleFloat|))))
488         (SEQ (LETT |ans| NIL)
489              (SEQ G190 (COND ((NULL (NULL (NULL |cosSin|))) (GO G191)))
490                   (SEQ (LETT |cossin| (|SPADfirst| |cosSin|))
491                        (LETT |cos| (|SPADfirst| |cossin|))
492                        (LETT |sin| (SPADCALL |cossin| (QREFELT $ 51)))
493                        (LETT |ans|
494                              (CONS
495                               (SPADCALL |ctr|
496                                         (SPADCALL |rad|
497                                                   (SPADCALL
498                                                    (SPADCALL |cos| |pNorm|
499                                                              (QREFELT $ 26))
500                                                    (SPADCALL |sin| |bNorm|
501                                                              (QREFELT $ 26))
502                                                    (QREFELT $ 22))
503                                                   (QREFELT $ 26))
504                                         (QREFELT $ 22))
505                               |ans|))
506                        (EXIT (LETT |cosSin| (CDR |cosSin|))))
507                   NIL (GO G190) G191 (EXIT NIL))
508              (LETT |pt|
509                    (SPADCALL |ctr| (SPADCALL |rad| |pNorm| (QREFELT $ 26))
510                              (QREFELT $ 22)))
511              (EXIT (CONS |pt| (SPADCALL |ans| |pt| (QREFELT $ 12)))))))
512
513(SDEFUN |SCIFS;curveLoops;LDfIL;14|
514        ((|pts1| |List| PT) (|r| |DoubleFloat|) (|nn| |Integer|)
515         ($ |List| (|List| PT)))
516        (SPROG
517         ((|loops| (|List| (|List| PT))) (|b| (PT)) (|n| (PT)) (#1=#:G504 NIL)
518          (|pt| NIL) (#2=#:G505 NIL) (|triad| NIL)
519          (|cosSin| (|List| (|List| (|DoubleFloat|))))
520          (|triads|
521           (|List| (|Record| (|:| |tang| PT) (|:| |norm| PT) (|:| |bin| PT)))))
522         (SEQ (LETT |triads| (|SCIFS;curveTriads| |pts1| $))
523              (LETT |cosSin| (|SCIFS;cosSinInfo| |nn| $)) (LETT |loops| NIL)
524              (SEQ (LETT |triad| NIL) (LETT #2# |triads|) (LETT |pt| NIL)
525                   (LETT #1# |pts1|) G190
526                   (COND
527                    ((OR (ATOM #1#) (PROGN (LETT |pt| (CAR #1#)) NIL)
528                         (ATOM #2#) (PROGN (LETT |triad| (CAR #2#)) NIL))
529                     (GO G191)))
530                   (SEQ (LETT |n| (QVELT |triad| 1))
531                        (LETT |b| (QVELT |triad| 2))
532                        (EXIT
533                         (LETT |loops|
534                               (CONS
535                                (|SCIFS;loopPoints| |pt| |n| |b| |r| |cosSin|
536                                 $)
537                                |loops|))))
538                   (LETT #1# (PROG1 (CDR #1#) (LETT #2# (CDR #2#)))) (GO G190)
539                   G191 (EXIT NIL))
540              (EXIT (NREVERSE |loops|)))))
541
542(SDEFUN |SCIFS;stube;LDfI$;15|
543        ((|functions| |List|
544          (|Record| (|:| |source| (|Mapping| PT (|DoubleFloat|)))
545                    (|:| |ranges| (|List| (|Segment| (|DoubleFloat|))))
546                    (|:| |knots| (|List| (|DoubleFloat|)))
547                    (|:| |points| (|List| PT))))
548         (|r| |DoubleFloat|) (|n| |Integer|) ($ $))
549        (SPROG
550         ((|loops| (|List| (|List| PT))) (#1=#:G513 NIL) (|bran| NIL)
551          (|brans| (|List| (|List| PT))))
552         (SEQ
553          (COND ((< |n| 3) (|error| "tube: n should be at least 3"))
554                ('T
555                 (SEQ (LETT |brans| (|SCIFS;listBranches| |functions| $))
556                      (LETT |loops| NIL)
557                      (SEQ (LETT |bran| NIL) (LETT #1# |brans|) G190
558                           (COND
559                            ((OR (ATOM #1#)
560                                 (PROGN (LETT |bran| (CAR #1#)) NIL))
561                             (GO G191)))
562                           (SEQ
563                            (EXIT
564                             (LETT |loops|
565                                   (SPADCALL |loops|
566                                             (SPADCALL |bran| |r| |n|
567                                                       (QREFELT $ 52))
568                                             (QREFELT $ 53)))))
569                           (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
570                      (EXIT (SPADCALL |loops| 'T (QREFELT $ 17)))))))))
571
572(SDEFUN |SCIFS;coerce;$Of;16| ((|me| $) ($ |OutputForm|))
573        (SPROG
574         ((|res| (|List| (|OutputForm|))) (|r| (|OutputForm|)) (#1=#:G524 NIL)
575          (|pIx| NIL) (#2=#:G523 NIL) (|faceIx| NIL) (#3=#:G522 NIL) (|p| NIL))
576         (SEQ (LETT |r| (SPADCALL (QREFELT $ 59)))
577              (SEQ (LETT |p| NIL) (LETT #3# (QCDR |me|)) G190
578                   (COND
579                    ((OR (ATOM #3#) (PROGN (LETT |p| (CAR #3#)) NIL))
580                     (GO G191)))
581                   (SEQ
582                    (LETT |r|
583                          (SPADCALL |r| (SPADCALL |p| (QREFELT $ 60))
584                                    (QREFELT $ 61)))
585                    (EXIT
586                     (LETT |r|
587                           (SPADCALL |r| (SPADCALL " " (QREFELT $ 63))
588                                     (QREFELT $ 61)))))
589                   (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
590              (LETT |res| (LIST |r|))
591              (SEQ (LETT |faceIx| NIL) (LETT #2# (QCAR |me|)) G190
592                   (COND
593                    ((OR (ATOM #2#) (PROGN (LETT |faceIx| (CAR #2#)) NIL))
594                     (GO G191)))
595                   (SEQ (LETT |r| (SPADCALL (QREFELT $ 59)))
596                        (SEQ (LETT |pIx| NIL) (LETT #1# |faceIx|) G190
597                             (COND
598                              ((OR (ATOM #1#)
599                                   (PROGN (LETT |pIx| (CAR #1#)) NIL))
600                               (GO G191)))
601                             (SEQ
602                              (LETT |r|
603                                    (SPADCALL |r|
604                                              (SPADCALL |pIx| (QREFELT $ 64))
605                                              (QREFELT $ 61)))
606                              (EXIT
607                               (LETT |r|
608                                     (SPADCALL |r|
609                                               (SPADCALL " " (QREFELT $ 63))
610                                               (QREFELT $ 61)))))
611                             (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
612                        (EXIT
613                         (LETT |res| (SPADCALL |res| |r| (QREFELT $ 66)))))
614                   (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
615              (EXIT (SPADCALL |res| (QREFELT $ 68))))))
616
617(DECLAIM (NOTINLINE |SceneIFS;|))
618
619(DEFUN |SceneIFS| (#1=#:G525)
620  (SPROG NIL
621         (PROG (#2=#:G526)
622           (RETURN
623            (COND
624             ((LETT #2#
625                    (|lassocShiftWithFunction| (LIST (|devaluate| #1#))
626                                               (HGET |$ConstructorCache|
627                                                     '|SceneIFS|)
628                                               '|domainEqualList|))
629              (|CDRwithIncrement| #2#))
630             ('T
631              (UNWIND-PROTECT (PROG1 (|SceneIFS;| #1#) (LETT #2# T))
632                (COND ((NOT #2#) (HREM |$ConstructorCache| '|SceneIFS|))))))))))
633
634(DEFUN |SceneIFS;| (|#1|)
635  (SPROG ((|pv$| NIL) ($ NIL) (|dv$| NIL) (DV$1 NIL))
636         (PROGN
637          (LETT DV$1 (|devaluate| |#1|))
638          (LETT |dv$| (LIST '|SceneIFS| DV$1))
639          (LETT $ (GETREFV 70))
640          (QSETREFV $ 0 |dv$|)
641          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
642          (|haddProp| |$ConstructorCache| '|SceneIFS| (LIST DV$1) (CONS 1 $))
643          (|stuffDomainSlots| $)
644          (QSETREFV $ 6 |#1|)
645          (SETF |pv$| (QREFELT $ 3))
646          (QSETREFV $ 7
647                    (|Record|
648                     (|:| |inx| (|List| (|List| (|NonNegativeInteger|))))
649                     (|:| |pts| (|List| |#1|))))
650          (QSETREFV $ 31 (|mk_DF| 995 -3))
651          (QSETREFV $ 32 (SPADCALL 1 0 0 (QREFELT $ 21)))
652          (QSETREFV $ 33 (SPADCALL 0 1 0 (QREFELT $ 21)))
653          (QSETREFV $ 34 (SPADCALL 1 1 0 (QREFELT $ 21)))
654          (QSETREFV $ 35 (QREFELT $ 34))
655          $)))
656
657(MAKEPROP '|SceneIFS| '|infovec|
658          (LIST
659           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|Rep| (|List| 13)
660              |SCIFS;indexes;$L;1| (|List| 6) |SCIFS;pointList;$L;2|
661              (0 . |concat|) (|List| 23) (6 . |concat|) (|List| 10) (|Boolean|)
662              |SCIFS;smesh;LB$;4| |SCIFS;singleFace;L$;5| (|Integer|)
663              (12 . |elt|) (18 . |sipnt|) (25 . +) (|NonNegativeInteger|)
664              (31 . |#|) (|DoubleFloat|) (36 . *) (42 . |elt|) (48 . |setelt!|)
665              |SCIFS;subdivide;2$;6| |SCIFS;sierpinskiDivide;$Nni$;7| 'LINMAX
666              'XHAT 'YHAT 'PREV0 'PREV (55 . |colinearity|) (61 . >)
667              (67 . |parallel|) (73 . -) (79 . |unitVector|)
668              (84 . |perpendicular|) (90 . |second|)
669              (|Record| (|:| |tang| 6) (|:| |norm| 6) (|:| |bin| 6))
670              (|List| 43) (95 . |last|) (100 . |concat|) (|PositiveInteger|)
671              (106 . *) (112 . *) (|List| 25) (118 . |second|)
672              |SCIFS;curveLoops;LDfIL;14| (123 . |concat|) (|Mapping| 6 25)
673              (|Record| (|:| |source| 54)
674                        (|:| |ranges| (|List| (|Segment| 25))) (|:| |knots| 50)
675                        (|:| |points| 10))
676              (|List| 55) |SCIFS;stube;LDfI$;15| (|OutputForm|) (129 . |empty|)
677              (133 . |coerce|) (138 . |hconcat|) (|String|) (144 . |message|)
678              (149 . |coerce|) (|List| 58) (154 . |concat|) (|List| $)
679              (160 . |vconcat|) |SCIFS;coerce;$Of;16|)
680           '#(|subdivide| 165 |stube| 170 |smesh| 177 |singleFace| 183
681              |sierpinskiDivide| 188 |pointList| 194 |indexes| 199 |curveLoops|
682              204 |coerce| 211)
683           'NIL
684           (CONS (|makeByteWordVec2| 1 '(0))
685                 (CONS '#(NIL)
686                       (CONS
687                        '#((|Join|
688                            (|mkCategory|
689                             (LIST
690                              '((|smesh|
691                                 ($$ (|List| (|List| |#1|)) (|Boolean|)))
692                                T)
693                              '((|singleFace| ($$ (|List| |#1|))) T)
694                              '((|subdivide| ($$ $$)) T)
695                              '((|sierpinskiDivide|
696                                 ($$ $$ (|NonNegativeInteger|)))
697                                T)
698                              '((|stube|
699                                 ($$
700                                  (|List|
701                                   (|Record|
702                                    (|:| |source|
703                                         (|Mapping| |#1| (|DoubleFloat|)))
704                                    (|:| |ranges|
705                                         (|List| (|Segment| (|DoubleFloat|))))
706                                    (|:| |knots| (|List| (|DoubleFloat|)))
707                                    (|:| |points| (|List| |#1|))))
708                                  (|DoubleFloat|) (|Integer|)))
709                                T)
710                              '((|curveLoops|
711                                 ((|List| (|List| |#1|)) (|List| |#1|)
712                                  (|DoubleFloat|) (|Integer|)))
713                                T)
714                              '((|indexes|
715                                 ((|List| (|List| (|NonNegativeInteger|))) $$))
716                                T)
717                              '((|pointList| ((|List| |#1|) $$)) T)
718                              '((|coerce| ((|OutputForm|) $$)) T))
719                             (LIST) NIL NIL)))
720                        (|makeByteWordVec2| 69
721                                            '(2 10 0 0 6 12 2 8 0 0 13 14 2 10
722                                              6 0 19 20 3 6 0 19 19 19 21 2 6 0
723                                              0 0 22 1 13 23 0 24 2 6 0 25 0 26
724                                              2 13 23 0 19 27 3 13 23 0 19 23
725                                              28 2 6 25 0 0 36 2 25 16 0 0 37 2
726                                              6 25 0 0 38 2 6 0 0 0 39 1 6 0 0
727                                              40 2 6 0 0 0 41 1 10 6 0 42 1 44
728                                              43 0 45 2 44 0 0 43 46 2 25 0 47
729                                              0 48 2 25 0 23 0 49 1 50 25 0 51
730                                              2 15 0 0 0 53 0 58 0 59 1 6 58 0
731                                              60 2 58 0 0 0 61 1 58 0 62 63 1
732                                              23 58 0 64 2 65 0 0 58 66 1 58 0
733                                              67 68 1 0 0 0 29 3 0 0 56 25 19
734                                              57 2 0 0 15 16 17 1 0 0 10 18 2 0
735                                              0 0 23 30 1 0 10 0 11 1 0 8 0 9 3
736                                              0 15 10 25 19 52 1 0 58 0 69)))))
737           '|lookupComplete|))
738