Entries from 2010-06-01 to 1 month

例えば球の頂点データを作るのにたったこれだけっていうのは、やっぱり短いし楽だと思う。 (defun circle-xy(index step) (let ((radian (/ (* 2 pi index) (- step 1)))) (list (sin radian) (cos radian)))) (defun sphere-xyz(circle-xy index step) (let…

回転行列

(defun (setf matrix-at) (value m i j) ;; row major (setf (elt m (+ (* i 4) j)) value)) (defun rotation-matrix!(identity-mat degree x y z &key setter) (let ((m identity-mat) (setter (if setter setter #'(setf matrix-at))) (mag (sqrt (apply #…

キーワード

ここのところ、( keyword . plist )という感じのリストをよく使っています。 例えば、(:material :specular '(1 0 0 1))みたいな感じです。 手で入力するのはこの程度にとどめたいのですが、デフォルト値とかが他に色々あるので、これを関数に渡して(:MATERI…

重複を取り除くとか。

シーケンス関連が充実してるCommon Lispですが、ユニーク化したり、重複を見つけ出したりする楽な方法がわからずに結局関数を書くことに。以下のような感じなのですが、どなたかもっと正統な方法教えてくださらないものか・・・・。 (defun unique (lst &key…