Skip to content

Instantly share code, notes, and snippets.

@sgithens
Created October 10, 2024 14:47
Show Gist options
  • Select an option

  • Save sgithens/631867bbc918b86a27d7bd521f96b278 to your computer and use it in GitHub Desktop.

Select an option

Save sgithens/631867bbc918b86a27d7bd521f96b278 to your computer and use it in GitHub Desktop.
repaint rotate demo draft
(defvar *xxx-rot* 0) ;pi)
(defvar *yyy-rot* 0) ;25)
(defvar *zzz-rot* 0) ;pi)
(defvar *xxx-index* 0)
(defvar *yyy-index* 0)
(defvar *zzz-index* -1900)
(defvar *box-depth-mult* 5)
(defun demo ()
(setf *xxx-rot* 0
*yyy-rot* 0
*zzz-rot* 0
*box-depth-mult* 1)
(sleep 1)
(dotimes (x 100) (incf *xxx-rot* 0.01) (sleep 0.01))
(sleep 0.5)
(dotimes (x 100) (incf *box-depth-mult* 0.12) (sleep 0.01))
(sleep 0.5)
(loop for i
from 0 to 1257
do (decf *zzz-rot* 0.02)
do (sleep 0.01)
)
(setf *zzz-rot* 0)
(dotimes (x 100) (decf *box-depth-mult* 0.12) (sleep 0.01))
(dotimes (x 100) (decf *xxx-rot* 0.01) (sleep 0.01)))
(defun demo2 ()
(setf *xxx-rot* 0
*yyy-rot* 0
*zzz-rot* 0
*box-depth-mult* 1)
(sleep 1)
(loop for i
from 0 to 100
do (progn
(decf *zzz-rot* 0.02)
(incf *xxx-rot* 0.01)
(incf *box-depth-mult* 0.12))
do (sleep 0.01)
)
(loop for i
from 0 to 428
do (decf *zzz-rot* 0.02)
do (sleep 0.01)
)
(loop for i
from 0 to 95
do (progn
(decf *zzz-rot* 0.02)
(decf *xxx-rot* 0.01)
(decf *box-depth-mult* 0.12))
do (sleep 0.01)
)
(setf *xxx-rot* 0
*yyy-rot* 0
*zzz-rot* 0
*box-depth-mult* 1))
(defun repaint-window (&OPTIONAL (WINDOW *BOXER-PANE*) (flush-buffer? t) &KEY (process-state-label "stopped"))
(check-for-window-resize)
;; (format t "~%repaint-window: hmm6.2")
(clear-window window)
(let ((view-matrix (3d-matrices:meye 4)))
(3d-matrices:nmtranslate view-matrix (3d-vectors:vec *xxx-index* *yyy-index* *zzz-index*))
(setf (boxer::boxgl-device-transform-matrix bw::*boxgl-device*)
view-matrix)
(setf (boxer::boxgl-device-model-matrix bw::*boxgl-device*)
(3d-matrices:meye 4))
(update-matrices-ubo bw::*boxgl-device*)
(with-pen-color (*orange*)
(draw-rectangle 10 10 0 0)
(draw-line 0 -5000 0 5000)
(draw-line -5000 0 5000 0)
))
(let ((view-matrix (3d-matrices:meye 4))
(flip (3d-matrices:meye 4)))
(setf (aref (3d-matrices:marr4 flip) 5) -1.0)
(3d-matrices:nmtranslate view-matrix (3d-vectors:vec *xxx-index* *yyy-index* *zzz-index*))
(setf view-matrix (3d-matrices:m* view-matrix flip))
(3d-matrices:nmrotate view-matrix 3d-vectors:+vx+ *xxx-rot*)
(3d-matrices:nmrotate view-matrix 3d-vectors:+vy+ *yyy-rot*)
(3d-matrices:nmrotate view-matrix 3d-vectors:+vz+ *zzz-rot*)
(setf (boxer::boxgl-device-transform-matrix bw::*boxgl-device*)
view-matrix)
)
(update-matrices-ubo bw::*boxgl-device*)
(REDISPLAYING-WINDOW (WINDOW)
;; (clear-window window)
(repaint-guts)
(repaint-mouse-docs)
;; (let ((cur-transform (boxer::boxgl-device-transform-matrix bw::*boxgl-device*)))
;; (set-transform bw::*boxgl-device* 0 0)
;; (repaint-dev-overlay process-state-label)
;; (setf (boxer::boxgl-device-transform-matrix bw::*boxgl-device*) cur-transform))
(when flush-buffer? (swap-graphics-buffers window)))
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment