Entries from 2010-01-01 to 1 year

おれおれForth

あるとき、某Yさんと話していて、postscriptについて調べてるうちにForthにたどり着き、LOLを思い出して久しぶりに読んでみたところ、ふっとCっぽいもので書けそうな気がしたのと、いろいろYさんに豪語した証明しないといけない気がしたことから、Forth書い…

ES20Log

最近、自分が思いっきり専門用語を使える相手とお話する機会があり、そのときは非常に楽しい時間をすごせました。 そのなかで、いろいろパフォーマンスに関する質問や、それらを表示出来ないのかと言われましたが、準備していなかったため応えることができま…

制限を調べるなど。

シェーダーがうまく動かなくて、気になって調べてみた。 使ったのははこんなコード。 #define LOG_GL_INTEGER( target ) {int num;glGetIntegerv(target, &num);printf("%s : %d\n",#target,num);} LOG_GL_INTEGER(GL_MAX_VERTEX_ATTRIBS); LOG_GL_INTEGER(G…

今日ほんとはやりたかったこと

睡眠不足オーラふりまきまくった上にがっつり寝てしまってすんません。やりかけていたことができたのでとりあえず。 (defparameter test-node '(:node (:node (:node) (:node) (:node)) (:node (:node)))) (defun node-children(node) (cdr node)) (defun bf…

デプスバッファ

Xcodeの新規プロジェクトのOpenGLESのテンプレートがいつの間にか変わっていた。 RootViewControllerが増えたことに伴う変更のようだけれども、責任分担なども前と違っているのと、ES1.1用とES2.0用のコードを二重に用意するやりかたも変わっているようです…

.DS_Storeファイルを消す。

ファイルの整理してて、ふと.DS_Storeを全部消しておこうと思い立って、やりだしたものの、いろいろ忘れていて苦戦したので、また忘れたときのためにメモ find . -name ".DS_Store" | perl -e '$|=1;while(<>) {chop;print "rm \"$_\"\n";}' | sh $|=1が必要…

忘れそうなのでメモ

iPhoneアプリからAppStoreを開いて、特定のアプリを表示させたい場合の話し。 -openURL:をつかって呼び出したい場合のスキームはitms-app:らしい。 http://itunes.com/app/TargetAppName みたいなURLと組み合わせてみたところ、普通に使えたので、これでいい…

今頃気付く。

今頃__VA_ARGS__の存在に気付く。 #ifndef NDEBUG #define NSLOG( ... ) NSLog( __VA_ARGS__ ) #else #define NSLOG( ... ) #endif

調子にのって追加

template<> inline float dot( const vec3<float> & lhs, const vec3<float> & rhs ) { return cblas_sdot(3, &lhs[0], 1, &rhs[0], 1); } template<> inline float length( const vec3<float> & vec) { return cblas_snrm2(3, &vec[0], 1); } template<> inline vec3<float> normalize( </float></float></float></float>…

4x4その他

#import <Accelerate/Accelerate.h> void MultMatrix4x4( float *lhs, float *rhs, float *result ) { // result = LHS * RHS cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, 4, 4, 4, 1.0f, lhs, 4, rhs, 4, 0.0f, result, 4); } void MultMatrix4x4Vector4( float *mat4, </accelerate/accelerate.h>…

逆行列さらに再び

http://www.a.mei.titech.ac.jp/~kabe/calcsoft/library/lapack/clapack/usage/index.htmlを参考にfloatの4x4逆行列をAccelerate Frameworkを使って求めてみる。 #import <Accelerate/Accelerate.h> void InvMatrix4x4( __CLPK_real *matrix ) { __CLPK_integer m,n,lda,info,lwork; _</accelerate/accelerate.h>…

例えば球の頂点データを作るのにたったこれだけっていうのは、やっぱり短いし楽だと思う。 (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…

ES1.1でなんちゃってglBeginとglEnd

http://gist.github.com/405011ちょこっと実験したいときとか、ちょこっと補助的な描画物を足したいときとか、glBegin glEndがないのは結構不便だなと常々思ってました。 でまぁ、ふと作れば良いんじゃんとか思い浮かんでしまって、今作ってるライブラリ上に…

文字列を改行でぶったぎったリストにする

しばらくlisp触ってなくて忘れてたとはいえ、こんなことで30分も悩んだので自戒と供にメモ。 (defun split-at-newline (str) (with-input-from-string (in str) (loop for line = (read-line in nil) while line collect line))) あと文字列の長さ調べるのに…

コメント

//は;で同じだけれども、しばらく/* */に相当するコメントの方法がわからなく、一時的にコードを書換えてみたいときなどに難儀していました。 つい最近、/* */に相当するものを見つけたのでメモ。 #| コメントアウト |# コメントしていただきありがとうござ…

方言を決めたとき

一番最初に触った処理系は実はGaucheで、電卓変りに使っていたlisp方言の処理系としては、Gaucheが一番長い。自分をS式に慣れさせてくれたのはGaucheでした。しかし、Lisp方言のなかで自分が最初にモノにする言語としてどれにするかはかなりの間迷った。最後…

メモ

Imagination Technologies PowerVR SGX 535ES1 Extentions GL_APPLE_texture_2D_limited_npot GL_EXT_blend_minmax GL_EXT_texture_lod_bias GL_IMG_read_format GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_OES_blend_equation_se…

目にとまったので、ちょっとやってみた。

(defmacro alambda (params &body body) `(labels ((self ,params ,@body)) #'self)) (defmacro aif (test-form then-form &optional else-form) `(let ((it ,test-form)) (if it ,then-form ,else-form))) (defun numlist-from-string (s) (loop for i from…

ここまでの流れ。

書籍"Let Over Lambda"をLISP未経験なのに間違って買う。 一章で挫折。 電卓変りにREPL使ってLISPに慣れることに。 "実践Common Lisp"がいいらしいと聞き買う。 emacsの設定で失敗し、httpサーバーも動かなくて挫折。 でも懲りずに少しずつ動かし慣れる。 Al…

逆行列再び

ニューメリカルレシピinCを参考に書いてみました。 ublasにピボット無しのLU分解のメソッドがあることに気付いたので、 また逆行列やってみるときはそこら辺かな。※何度か修正してます。 (in-package #:cl) (defpackage #:lu (:use :cl) (:export #:m-inv)) …

Wavefront OBJをCommonLispで読込んでみるなど。

OBJファイルというのは、コメント行が#、位置座標ベクトルがv、法線ベクトルがvn、UVがvt、面がf、グループがgで、それぞれ始る行がだーっと沢山ならんだ内容にないっている、3Dのメッシュデータのrepresentationです。 このファイルを読込むことは、以前か…

OSX 10.6+SBCL+Carbon EmacsでSLIMEのセットアップ中

検索ででてくる日本語のページを参考にセットアップに挑戦し、その都度失敗を繰返していました。 今朝とあるビデオを観ていたときに、あまりにもSLIMEが便利そうだったので、改めてやり直してみたところうまくいきました。本家のマニュアルをみたところ、以…

objcメモ

id型でプロパティーのドットアクセスが使えないとTLにあったので、素のid型ではないのですが、一工夫してidでドットアクセスする方法についてメモします。 Objective-Cではアクセサを記述するのに、インターフェースに書く場合と、プロトコルに書く場合とが…

SICP問題1.12をやってみた。

clですが。 なんか問題の捉え方が間違ってる気がするのでまたこんどやり直します。 (defun pas-accum(array) (let ((last-left 0)) (mapcar #'(lambda (x) (let ((left last-left)) (setf last-left x) (+ left x))) (append array '(0))))) (defun pas-r(p …

マクロおぼえたて

基礎的なことはサッパリなのに、マクロをとりあえず使ってみることに。 必要性があって使ってるわけではないけれど、勉強中ということでご容赦を。ネタはまたも4x4の逆行列。 オリジナルはnvidia OpenGL SDK 10.5のものです。http://gist.github.com/340940

ループ

for( int i = 0; i みたいなループを使いたいわけですが、(loop for i from 0 to 10 collect i) だと (0 1 2 3 4 5 6 7 8 9 10) となり、一個多くなってしまいます。aboveとbelowをtoの部分に使えること知り、早速試してみることに。(loop for i from 0 belo…

勉強中

http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4 を参考に、PMDをsbclで表示してみました。 画像はとりあえずありません。最初の速度がでない状態と、今の多少よくなった状態とのギャップが激しすぎてびっくり。 今回はじめて構…