« 2007年03月 | メイン | 2007年05月 »

2007年04月23日

3D

更新2


続けて書いてみる。


色々三次元系のライブラリを探したものの、
どれも本格的すぎて気軽に使えない。


それだったらDirectXでもやりますって感じ。
「ここのこの画像だけ三次元でクルクルッと」とかしたいだけなのに
いちいちシーングラフにカメラ置いて座標決めてオブジェクト置いてマッピングして、、
とは、やりたくない。
「ポイントつくってこのポイント群だけ三次元ですよ、
あとはその座標横取りして画像を歪ませますから」
とか、したいだけ。


というライブラリ製作中。
でも、flash7(2004)では無理っぽいなぁ、と。
8からだな。
ひっそり公開しようかな、、、
需要あったら。


追記
ってかよく考えたら
そのぐらいならライブラリにするまでもないのかな、、、
普通に単なる計算するだけだし、、、

投稿者 hiphi : 17:10 | コメント (0) | トラックバック

三角関数

突然だけど、三角関数覚え書き(超初心者向け)


sinθとは斜辺の長さを1としたときの高さ。
cosθとは斜辺の長さを1としたときの底辺の長さ。
ラジアン角とは半径を1としたときの円周の長さ。


上記の様に単位を1としたときの値を求めておく理由は
sinθ、cosθは合同な三角形の場合その倍率をかければその長さがが分かるから。
円もほぼ同じ理由。



二次元アフィン変換
ベクトルa(x,y)をθ度だけ回転させたときの座標a'(x',y')
x' = xcosθ - ysinθ;
y' = xsinθ + ycosθ;



ベクトルの内積、外積
ここ参考青空の果て
ここの書き方が一番分かりやすかった


内積
a・b = |a| |b| cosθ
要約するとベクトルAに対してのベクトルBでは
ベクトルBのベクトルAに対しての作用量。
だから|a| と |b| cosθに分けて考えると分かりやすい。

return a.x*b.x+a.y*b.y+a.z*b.z;
(なぜか三次元)


外積
内積を理解してから考えると分かりやすい。
取り合えずベクトルA、Bに垂直なベクトルを求めるものと
理由を考えずに覚える。


外積によって求められたベクトルと元になった 2 つのベクトルそれぞれの内積は 0 になる。
a x b = c
a・b = 0, b・c = 0
これは内積で求められた cos90°の事である。(ここ重要)
ここから法線ベクトルを求められる。
左手系、右手系で座標が変わる。

a.y*b.z - a.z*b.y , a.z*b.x - a.x*b.z , a.x*b.y - a.y*b.x;
返り値はx,y,zのベクトルの座標



これ毎回忘れがちなのでメモ。

投稿者 hiphi : 16:33 | コメント (2) | トラックバック

2007年04月09日

Xcode その2 CoreAudio

MacでProgramで音をならしたい場合は、CoreAudioというものがあります。


実際これを使うとなると、英語の壁にぶつかります。
日本語の文献は皆無。

ちょっと知り合いから詳しい人を紹介してもらい
色々情報をもらいました。(Hさん、ありがとう!)

下記はほぼそのもらった内容、、、

とりあえずサイン波を鳴らしたいという方はこちら。

Sin Wave

これがSuperColiderの所になぜかあります。

それと直接CoreAudioを使うのではなくこちらを使うともっと楽に使えます。
(ヘッダーファイルが1つにまとまってます)

PortAudio

音の操作は画像系プログラミングとはちょっと違う考え方を持たないとアレッという感じになります。
コールバック関数が重要。
それと音をならすには音がなんであるか分からないと、苦しいでしょう。
(サイン波って何?って人など


ライブラリ、サンプル、リファレンスを読んで分かることは
CocoaよりもCarbonが多いということ。
Objective cでもいけますが、すなおにc++で書いた方がきれいにかけそうです。

投稿者 hiphi : 11:43 | コメント (23) | トラックバック