more efficient way?

Devin

Usenet Archive
Joined
Sep 27, 2001
Messages
342
Reaction score
0
is there a more efficient way to translate? I think this is the same method as Jon's but I needed to write it out to understand it. Anyway, I'm thinking a mapcar solution. Any ideas?

(defun identity->matrix ( pt mat /
px py pz #0 #1 #2
#00 #01 #02 #03
#10 #11 #12 #13
#20 #21 #22 #23
)
(setq;extract pt
px (car pt)
py (cadr pt)
pz (caddr pt)
)
(setq;extract matrix
#0 (nth 0 mat) #1 (nth 1 mat) #2 (nth 2 mat)
#00 (nth 0 #0) #01 (nth 1 #0) #02 (nth 2 #0) #03 (nth 3 #0) #10 (nth 0 #1) #11 (nth 1 #1) #12 (nth 2 #1) #13 (nth 3 #1) #20 (nth 0 #2) #21 (nth 1 #2) #22 (nth 2 #2) #23 (nth 3 #2) ) (list;rotate/translate pt (+ (* px #00) (* py #01) (* pz #02) #03) (+ (* px #10) (* py #11) (* pz #12) #13) (+ (* px #20) (* py #21) (* pz #22) #23) )
)

(defun matrix->identity ( pt mat /
px py pz #0 #1 #2
#00 #01 #02 #03
#10 #11 #12 #13
#20 #21 #22 #23
)
(setq;extract pt
px (car pt)
py (cadr pt)
pz (caddr pt)
)
(setq;extract matrix
#0 (nth 0 mat) #1 (nth 1 mat) #2 (nth 2 mat)
#00 (nth 0 #0) #01 (nth 1 #0) #02 (nth 2 #0) #03 (nth 3 #0) #10 (nth 0 #1) #11 (nth 1 #1) #12 (nth 2 #1) #13 (nth 3 #1) #20 (nth 0 #2) #21 (nth 1 #2) #22 (nth 2 #2) #23 (nth 3 #2) ) (setq;translate pt px (- px #03) py (- px #13) pz (- px #23) ) (list;rotate pt (+ (* px #00) (* py #10) (* pz #20)) (+ (* px #01) (* py #11) (* pz #21)) (+ (* px #02) (* py #12) (* pz #22)) )
)
 

Latest threads

Back
Top