Guest User

Untitled

a guest
Sep 12th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.09 KB | None | 0 0
  1. (defclass quadtree ()
  2.   ((nw
  3.     :initarg :nw
  4.     :initform nil)
  5.    (ne
  6.     :initarg :ne
  7.     :initform nil)
  8.    (sw
  9.     :initarg :sw
  10.     :initform nil)
  11.    (se
  12.     :initarg :se
  13.     :initform nil)
  14.    (tl
  15.     :initarg :tl
  16.     :initform nil)
  17.    (br
  18.     :initarg :br
  19.     :initform nil)
  20.    (conts
  21.     :initarg :conts
  22.     :initform nil)))
  23.  
  24. (defmethod subdivide ((tree quadtree))
  25.   (with-slots (tl br ne nw se sw) tree
  26.     (setf ne
  27.           (make-instance 'quadtree :tl tl :br (mapcar #'* '(1/2 1/2) br)))
  28.     (setf nw
  29.           (make-instance 'quadtree :tl (mapcar #'* '(1/2 05) br) :br (mapcar #'* '(1/2 0) br)))
  30.     (setf se
  31.           (make-instance 'quadtree :tl (mapcar #'* '(0 1/2) br) :br (mapcar #'* '(1/2 1) br)))
  32.     (setf sw
  33.           (make-instance 'quadtree :tl (mapcar #'* '(1/2 1/2) br) :br br))))
  34.  
  35. (defmethod subdivide-n ((tree quadtree) times)
  36.   (unless (= times 0)
  37.     (subdivide tree)
  38.     (with-slots (ne nw se sw) tree
  39.       (subdivide-n ne (- times 1))
  40.       (subdivide-n nw (- times 1))\
  41.       (subdivide-n se (- times 1))
  42.       (subdivide-n sw (- times 1)))))
Add Comment
Please, Sign In to add comment