Fallstar

Untitled

Dec 12th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.96 KB | None | 0 0
  1. (defclass $circle ()
  2.     (($center :accessor center :initarg :center :type $point)
  3.     ($radius :accessor radius :initarg :radius)
  4.     )
  5. )
  6.  
  7. (defclass $square ()
  8.     (($corner :accessor corner :initarg :corner :type $point)
  9.     ($w :accessor w :initarg :w)
  10.     )
  11. )
  12.  
  13. (defclass $rectangle ()
  14.     (($corner :accessor corner :initarg :corner :type $point)
  15.     ($w :accessor w :initarg :w)
  16.     ($h :accessor h :initarg :h)
  17.     )
  18. )
  19.  
  20. (defclass $triangle ()
  21.     (($M1 :accessor M1 :initarg :M1 :type $point)
  22.     ($M2 :accessor M2 :initarg :M2 :type $point)
  23.     ($M3 :accessor M3 :initarg :M3 :type $point)
  24.     )
  25. )
  26.  
  27. (defclass $polygon ()
  28.     (($summitList :accessor summitList :initarg :summitList)
  29.     )
  30. )
  31.  
  32. (defclass $point ()
  33.     (($x :accessor x :initarg :x :type float)
  34.     ($y :accessor y :initarg :y :type float)
  35.     )
  36. )
  37.  
  38.  
  39. ; Methods for point
  40.  
  41. (defmethod translate ((point $point) dx dy)
  42.  (setf (x point) (+ (x point) dx))
  43.  (setf (y point) (+ (y point) dy))
  44. )
  45.  
  46. ; Methods for circle
  47.  
  48. (defmethod translateCircle ((cercle $circle) dx dy)
  49.  (translate (c cercle) dx dy)
  50. )
  51. (defmethod symO ($circle) (setf (center $circle) (make-instance '$point :x (- (x (center $circle))) :y (- (y (center $circle))))))
  52. (defmethod symX ($circle) (setf (center $circle) (make-instance '$point :x (- (x (center $circle))) :y (y (center $circle)))))
  53. (defmethod symY ($circle) (setf (center $circle) (make-instance '$point :x (x (center $circle)) :y (- (y (center $circle))))))
  54.  
  55.  
  56. ; Methods for square
  57.  
  58. (defmethod symO ($square) (setf (corner $square) (make-instance '$point :x (- (x (corner $square))) :y (- (y (corner $square))))))
  59. (defmethod symX ($square) (setf (corner $square) (make-instance '$point :x (- (x (corner $square))) :y (y (corner $square)))))
  60. (defmethod symY ($square) (setf (corner $square) (make-instance '$point :x (x (corner $square)) :y (- (y (corner $square))))))
  61.  
  62.  
  63. ; For test purposes
  64. (setq $origin (make-instance '$point :x 0 :y 0))
  65. (setq $myCircle (make-instance '$circle :center $origin :radius 1))
Advertisement
Add Comment
Please, Sign In to add comment