started adding generate pyramid function

This commit is contained in:
Dan Ballard 2011-07-23 09:23:43 -07:00
parent 17d511ba93
commit 49ab6a8554
1 changed files with 22 additions and 11 deletions

View File

@ -61,6 +61,15 @@
:faces (make-2d-array 8 3 '((0 3 1) (0 2 4) (0 1 2) (0 4 3) :faces (make-2d-array 8 3 '((0 3 1) (0 2 4) (0 1 2) (0 4 3)
(3 5 1) (2 5 4) (1 5 2) (4 5 3))))) (3 5 1) (2 5 4) (1 5 2) (4 5 3)))))
(defun make-model-3pyramid (points &key (face-colors nil) (point-colors nil)
(make-instance 'model
:vertices points
:faces (make-2d-array 4 3 '((0 1 3) (0 2 1) (0 3 2) (1 2 3)))
:colors colors
)))
;:face-colors (if (make-2d-array 4 3 '((0 1 3) (0 2 1) (0 3 2) (1 2 3)))))
(defparameter *ship-model* (defparameter *ship-model*
(make-instance 'model (make-instance 'model
:vertices (make-2d-array 4 3 '((0 0 0) (0 1 3) (-2 0 3) (2 0 3))) :vertices (make-2d-array 4 3 '((0 0 0) (0 1 3) (-2 0 3) (2 0 3)))
@ -68,6 +77,7 @@
:colors (make-2d-array 2 3 '((196 196 196) (32 32 32))) :colors (make-2d-array 2 3 '((196 196 196) (32 32 32)))
:face-colors (make-2d-array 4 3 '((0 0 0) (0 0 0) (0 0 0) (1 1 1))))) :face-colors (make-2d-array 4 3 '((0 0 0) (0 0 0) (0 0 0) (1 1 1)))))
(defparameter *world* nil) (defparameter *world* nil)
;(defparameter *origin* (vector 0 0 -7)) ;(defparameter *origin* (vector 0 0 -7))
@ -200,7 +210,7 @@
(gl:pop-matrix)) (gl:pop-matrix))
(defun draw (time) (defun draw ()
;; clear the buffer ;; clear the buffer
(gl:clear :color-buffer-bit :depth-buffer-bit) (gl:clear :color-buffer-bit :depth-buffer-bit)
;; move to eye position ;; move to eye position
@ -209,8 +219,9 @@
(gl:translate (- (aref (coords *self*) 0)) (- (aref (coords *self*) 1)) (- (aref (coords *self*) 2))) ;; eye (gl:translate (- (aref (coords *self*) 0)) (- (aref (coords *self*) 1)) (- (aref (coords *self*) 2))) ;; eye
(loop for entity across *world* do (loop for entity across *world* do
;(let ((entity (aref *world* i))) ; only draw if its infront of me
(draw-entity entity)) (if (< (aref (coords (motion entity)) 2) (aref (coords *self*) 2))
(draw-entity entity)))
@ -233,10 +244,10 @@
(sdl:update-display)) (sdl:update-display))
(defun phys-step (time) (defun phys-step (time)
(motion-step *self* time) (motion-step *self* time))
(format t "z-position: ~a z-velocity: ~a z-acceleration: ~a~%" (aref (coords *self*) 2) (aref (velocity *self*) 2) (aref (acceleration *self*) 2)) ; (format t "z-position: ~a z-velocity: ~a z-acceleration: ~a~%" (aref (coords *self*) 2) (aref (velocity *self*) 2) (aref (acceleration *self*) 2))
(format t "y-position: ~a y-velocity: ~a y-acceleration: ~a~%" (aref (coords *self*) 1) (aref (velocity *self*) 1) (aref (acceleration *self*) 1)) ; (format t "y-position: ~a y-velocity: ~a y-acceleration: ~a~%" (aref (coords *self*) 1) (aref (velocity *self*) 1) (aref (acceleration *self*) 1))
(format t "x-position: ~a x-velocity: ~a x-acceleration: ~a~%" (aref (coords *self*) 0) (aref (velocity *self*) 0) (aref (acceleration *self*) 0))) ; (format t "x-position: ~a x-velocity: ~a x-acceleration: ~a~%" (aref (coords *self*) 0) (aref (velocity *self*) 0) (aref (acceleration *self*) 0)))
;(loop for entity across *world* do ;(loop for entity across *world* do
; (motion-step (motion entity) time))) ; (motion-step (motion entity) time)))
; (accel (accelerator (motion entity)) entity time) ; (accel (accelerator (motion entity)) entity time)
@ -286,7 +297,7 @@
(phys-step time) (phys-step time)
(draw time) (draw)
(incf *num-frames*) (incf *num-frames*)
@ -329,15 +340,15 @@
(defun populate-world () (defun populate-world ()
(setf *world* (setf *world*
(make-array 10 :initial-contents (make-array 101 :initial-contents
(loop for i from 0 to 9 collecting (loop for i from 0 to 100 collecting
(let ((e (make-instance 'game-object (let ((e (make-instance 'game-object
:model (make-instance 'model :model (make-instance 'model
:vertices (vertices *diamond-model*) :vertices (vertices *diamond-model*)
:faces (faces *diamond-model*)) :faces (faces *diamond-model*))
:angles (vector (random 360) (random 360) (random 360)) :angles (vector (random 360) (random 360) (random 360))
:motion (make-instance 'motion :motion (make-instance 'motion
:coords (vector (- (random 10) 5) (- (random 10) 5) (- (random 10) 5)))))) :coords (vector (- (random 75) 37) (- (random 75) 37) (- (random 200) ))))))
(setf (colors (model e)) (make-2d-array 3 3 `((,(random 255) ,(random 255) ,(random 255)) (,(random 255) ,(random 255) ,(random 255)) (,(random 255) ,(random 255) ,(random 255))))) (setf (colors (model e)) (make-2d-array 3 3 `((,(random 255) ,(random 255) ,(random 255)) (,(random 255) ,(random 255) ,(random 255)) (,(random 255) ,(random 255) ,(random 255)))))
(setf (face-colors (model e)) (make-2d-array 8 3 '((0 1 1) (0 1 1) (0 1 1) (0 1 1) (1 2 1) (1 2 1) (1 2 1) (1 2 1)))) (setf (face-colors (model e)) (make-2d-array 8 3 '((0 1 1) (0 1 1) (0 1 1) (0 1 1) (1 2 1) (1 2 1) (1 2 1) (1 2 1))))
e))))) e)))))