
(/VERSIONCHECK 2) 

(PUT '|PARSURF;surface;3ComponentFunction$;1| '|SPADreplace| 'VECTOR) 

(DEFUN |PARSURF;surface;3ComponentFunction$;1| (|x| |y| |z| $)
  (VECTOR |x| |y| |z|)) 

(DEFUN |PARSURF;coordinate;$NniComponentFunction;2| (|c| |n| $)
  (COND
    ((EQL |n| 1) (QVELT |c| 0))
    ((EQL |n| 2) (QVELT |c| 1))
    ((EQL |n| 3) (QVELT |c| 2))
    ('T (|error| "coordinate: index out of bounds")))) 

(DEFUN |ParametricSurface| (#0=#:G1821)
  (PROG ()
    (RETURN
      (PROG (#1=#:G1822)
        (RETURN
          (COND
            ((LETT #1#
                   (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
                       (HGET |$ConstructorCache| '|ParametricSurface|)
                       '|domainEqualList|)
                   . #2=(|ParametricSurface|))
             (|CDRwithIncrement| #1#))
            ('T
             (UNWIND-PROTECT
               (PROG1 (|ParametricSurface;| #0#) (LETT #1# T . #2#))
               (COND
                 ((NOT #1#)
                  (HREM |$ConstructorCache| '|ParametricSurface|))))))))))) 

(DEFUN |ParametricSurface;| (|#1|)
  (PROG (DV$1 |dv$| $ |pv$|)
    (RETURN
      (PROGN
        (LETT DV$1 (|devaluate| |#1|) . #0=(|ParametricSurface|))
        (LETT |dv$| (LIST '|ParametricSurface| DV$1) . #0#)
        (LETT $ (GETREFV 11) . #0#)
        (QSETREFV $ 0 |dv$|)
        (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
        (|haddProp| |$ConstructorCache| '|ParametricSurface|
            (LIST DV$1) (CONS 1 $))
        (|stuffDomainSlots| $)
        (QSETREFV $ 6 |#1|)
        (QSETREFV $ 7
            (|Record| (|:| |xCoord| |#1|) (|:| |yCoord| |#1|)
                (|:| |zCoord| |#1|)))
        $)))) 

(MAKEPROP '|ParametricSurface| '|infovec|
    (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|Rep|
             |PARSURF;surface;3ComponentFunction$;1|
             (|NonNegativeInteger|)
             |PARSURF;coordinate;$NniComponentFunction;2|)
          '#(|surface| 0 |coordinate| 7) 'NIL
          (CONS (|makeByteWordVec2| 1 'NIL)
                (CONS '#()
                      (CONS '#()
                            (|makeByteWordVec2| 10
                                '(3 0 0 6 6 6 8 2 0 6 0 9 10)))))
          '|lookupComplete|)) 
