Skip to content

Instantly share code, notes, and snippets.

@pazeshun
Last active January 29, 2019 14:55
Show Gist options
  • Save pazeshun/8302f3700de52010fb2aa61d096f59d5 to your computer and use it in GitHub Desktop.
Save pazeshun/8302f3700de52010fb2aa61d096f59d5 to your computer and use it in GitHub Desktop.
(defun make-tube
(&key
(outer-r 100)
(inner-r 90)
(center-theta pi/2)
(height 200)
(sweep-vec (float-vector 0 0 height))
(divide-num 10)
)
(let* ((outer-point-list)
(inner-point-list)
(theta)
)
(dotimes (i (1+ divide-num))
(setq theta (* center-theta (/ (float i) divide-num)))
(push
(scale outer-r (float-vector (cos theta) (sin theta) 0))
outer-point-list)
(push
(scale inner-r (float-vector (cos theta) (sin theta) 0))
inner-point-list)
)
(make-prism (append outer-point-list (reverse inner-point-list)) sweep-vec)
))
(defun test-make-tube
()
(setq *obj1* (make-tube))
(send *obj1* :set-color :red)
(send *obj1* :translate (float-vector 0 0 0))
(setq *obj2* (make-tube :inner-r 50 :outer-r 100 :center-theta (* 3 pi/2) :height 50 :divide-num 40))
(send *obj2* :set-color :green)
(send *obj2* :translate (float-vector 0 300 0))
(setq *obj3* (make-tube :sweep-vec (float-vector 30 30 200)))
(send *obj3* :set-color :blue)
(send *obj3* :translate (float-vector 0 600 0))
(objects (list *obj1* *obj2* *obj3*))
)
(warn "(test-make-tube)~%")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment