Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defclass $circle ()
- (($center :accessor center :initarg :center :type $point)
- ($radius :accessor radius :initarg :radius)
- )
- )
- (defclass $square ()
- (($corner :accessor corner :initarg :corner :type $point)
- ($w :accessor w :initarg :w)
- )
- )
- (defclass $rectangle ()
- (($corner :accessor corner :initarg :corner :type $point)
- ($w :accessor w :initarg :w)
- ($h :accessor h :initarg :h)
- )
- )
- (defclass $triangle ()
- (($M1 :accessor M1 :initarg :M1 :type $point)
- ($M2 :accessor M2 :initarg :M2 :type $point)
- ($M3 :accessor M3 :initarg :M3 :type $point)
- )
- )
- (defclass $polygon ()
- (($summitList :accessor summitList :initarg :summitList)
- )
- )
- (defclass $point ()
- (($x :accessor x :initarg :x :type float)
- ($y :accessor y :initarg :y :type float)
- )
- )
- ; Methods for point
- (defmethod translate ((point $point) dx dy)
- (setf (x point) (+ (x point) dx))
- (setf (y point) (+ (y point) dy))
- )
- ; Methods for circle
- (defmethod translateCircle ((cercle $circle) dx dy)
- (translate (c cercle) dx dy)
- )
- (defmethod symO ($circle) (setf (center $circle) (make-instance '$point :x (- (x (center $circle))) :y (- (y (center $circle))))))
- (defmethod symX ($circle) (setf (center $circle) (make-instance '$point :x (- (x (center $circle))) :y (y (center $circle)))))
- (defmethod symY ($circle) (setf (center $circle) (make-instance '$point :x (x (center $circle)) :y (- (y (center $circle))))))
- ; Methods for square
- (defmethod symO ($square) (setf (corner $square) (make-instance '$point :x (- (x (corner $square))) :y (- (y (corner $square))))))
- (defmethod symX ($square) (setf (corner $square) (make-instance '$point :x (- (x (corner $square))) :y (y (corner $square)))))
- (defmethod symY ($square) (setf (corner $square) (make-instance '$point :x (x (corner $square)) :y (- (y (corner $square))))))
- ; For test purposes
- (setq $origin (make-instance '$point :x 0 :y 0))
- (setq $myCircle (make-instance '$circle :center $origin :radius 1))
Advertisement
Add Comment
Please, Sign In to add comment