タグ「Xcode」が付けられているもの

さすがに飽きた

OpenGL・・・ちょっと飽きてしまった。
ライティング、フォグ、テクスチャの貼り付けまで上手くいったのでここらで一旦休憩。

今日は日本語文字コードの自動判断をやってみた。
UTF-8は難しいので今回はパス。

それでも、なかなかエレガントに実装するのは無理っぽい。。


どういう事かというと、そこそこ判断出来るのだが、色々問題はあって
・「JIS」は簡単だけど、「Shift JIS」と「EUC」の文字コードが被っていて判断できない事がある。
・半角かなを使うと完全に文字コードが被る。
という事から、利用済みの文字コードの範囲だけを考えると判断に優先順位をつけてそれなりに判定するほか無い。

結論としては誤判定が起きるのも仕方ないって事ですか。残念ですが。


簡単そうだな〜と思ってたんですが、未熟な故「ポインタのポインタ渡し」でハマったので、半日で作れなかったのは残念なところです。
きっともっと短いコードで書けたんだろうな。
でも、自動判断が実装出来ちゃうと、変換は容易なので、これ以上頑張る必要は無いか。


それにしてもMacOS XのXcodeは使い勝手がイイです。
単なるC言語のソースを書くにしても、一連の「エディタで編集」→「コンパイル」→「デバッガでテスト」という作業は何も考えずにクリック一発だったりします。正直emacs/viで編集→Makefile作ってmakeという作業に戻れないかも。
他のIDEでもこういう事は出来るのですが、タダで使えちゃったりするのがイイ所です。しかもCとかJavaとか、その他ファイルも自由に扱えるせいで、肝心の「Objective-C」を習得する気が全くおきないのはアップルにとっては問題かも知れませんが。

OpenGL続き

OpenGLのライティング、上手くいきました。
・gluLookAtの後でライティングの設定を行う。
・ライティングの設定自身は視点を意識しない。
という2点でした。


それにしてもOpenGLの資料って多いようで少ないですね。本屋も行ってみたんですが、資料になりそうな本も少ないし、Webで検索しても「とりあえずやってみましょう」的なページが多くて、なかなか先に進めませんでした。

OpenGL勉強中・・・

視点変更を考えてみた。

取りあえず、角度a,bを定義する。
角度a
左向き=-90度、右向き=90度
角度b
下向き=-90度、上向き=90度
OpenGLの座標系で考えると
座標x
左=-1、右=1
座標y
上=-1、下=1
座標z
奥=-1、手前=1
となる。その条件で考えると、
gluLookAtで与える座標から見る視点の先は現在座標に(x,y,z)=(sin角度a,0,-cos角度a)を足した座標を与えることで、水平方向に視点を360度回転させることは出来た。(ぐるっと見渡す感じ)
問題は、そこに上下方向への視点変更を追加した場合。上下方向への座標は(x,y,z)=(0,sin角度b,-cos角度b,0)。したがって(x,y,-z)=(sin角度a,1,-cos角度a)(1,sin角度b,cos角度b)で上下左右に自由に視点が変更出来ると、単純にそう思っていたのだが、あくまで天地はひっくり返らないという結果になってしまった。冷静に考えると、自分の存在する座標点から後ろに振り返ったとしても、天地がひっくり返る事は無いわけだから、当たり前なんだが、想像上は天地がひっくり返ると思っていたので、何となく思っていた画と違ってしまった。
自分の勘違いは明白なので、理解は出来るのですが・・・。飛行機(戦闘機)の宙返りとかを表現する場合は、天地方向がひっくり返る処理も必要という事ですね。gluLookAtで上方向の指定(0.0,1.0,0.0)を(0.0,-1.0,0.0)とすれば良いのでしょうけど。。

ま、取りあえずココまでは上手くいったと思う。

angle_xは視点角度(左右)、angle_yは視点角度(上下)、M_PIは定数π=3.14159...。として、以下の計算値で視点は求められる。
/* 視点の元になる座標点を計算 */
x_x = sin(M_PI / 180 * angle_x);
x_z = -cos(M_PI / 180 * angle_x);
y_y = sin(M_PI / 180 * angle_y);
y_z = cos(M_PI / 180 * angle_y);
x = x_x * 1.0;
y = y_y * 1.0;
z = x_z * y_z;
/* 視点変更 */
gluLookAt(look_x, look_y, look_z, look_x + x, look_y + y, look_z + z,
0.0, 1.0, 0.0);

その後、ライティングで難航。。
自分の視点にスポットライトを置いて、ライトの方角を上記の座標(x,y,z)を与えてやることで、自分がライトで照らしながらモノを見ている感じに出来ると思っていたのだが、結果ライトの方向はライティングには反映されない。
色々いじってみたんだけど、どうも上手くいかない。

引き続きOpenGL

昨日に引き続きOpenGLで遊んでみる。

光源設定って、滅茶苦茶難しいじゃないですか。
意図した結果になかなかなりません。
そのうえ、PowerBookG4とiBookG3でglNormal3dのベクトルが反対になる・・・。
なんだこれは?
とか言いつつ、OpenGLも勉強してみました。

でも、何年ぶりでしょうか。完全にプログラミングで遊べるのって。
非常に勉強にもなるし、またどこかで役にたつかも知れませんし。

取りあえず「GL_QUADSは、左周りで書け」と。
裏面になったときに右回りになることで、背面であることを判断するラシイので。
全部左回りで書いておくと、背面に存在する部分が右回りで描かれることを利用するという事・・・だ、そうです。確かに。でも書き順で判断するって・・・・。
何の為のZバッファなのかしら?
(ZバッファはZバッファで正常に動作しますが・・・。昔のハードがしょぼかったから、Zバッファを使わずに済ませる方法として、こういう実装になったのでしょうかね?)


・・・本当は今日の成果(ソース)を置きたいのですが、画像ファイルしかアップロード出来ないみたいなので諦めます。

次はテクスチャの貼り付けとか、ミップマップとかですか。
ビットマップ(画像)必要なら、しばらく手は出さないでしょうね。。だって絵、描けないもん。

XcodeにSDLをインストール

OpenGLなんて使わないし、SDLも使わないのですがインストールメモ。単なるディスクの肥やしですが。

以下Xcode2.0での手順です。

1.http://www.libsdl.org/からSDL-1.2.11.dmgとSDL-devel-1.2.11-extras.dmgをダウンロードする。

2.SDL-1.2.11.dmgをマウント後、SDL.frameworkを/Library/Frameworkにコピー

3.SDL-devel-1.2.11-extras.dmgをマウント後、TemplatesForProjectBuilderの下にあるSDL*という4つのフォルダを/Library/Application Support/Apple/Developer Tools/Project Templates/Application/にコピー

以上で、Xcodeの新しいプロジェクトにSDL*の新規プロジェクトが4つ増える。


これでOpenGL使って遊べる・・・のか?

MAC OS X 10.4とATOK16 for MAC(Updater 1.0.3)の組み合わせで色々変な現象に遭遇してしまったので。

1.ちょっと小技

「ことえり」の環境設定で¥と\の切り替えが出来る。

Xcode(MACの統合開発環境)で「\」を入力したら、「¥」が入ってしまう。
で、Xcodeに度々怒られてしまう。
さてどうしようかgoogleで検索したら、「Option + \」で入るという情報が。

とりあえず、しょうがない。こんなもんか。と諦めてみた。

ところがだ、
    printf("\n");
ごときでミスタイプして怒られてしまうのでいい加減きれてしまった。
ふとしたことで「ことえり」に切り替えてみると環境設定の中に
「¥」と「\」の切り替えがあるではないか。
なんだこんな事だったのか、と。
ちなみにATOKにはこのオプションは存在しません。
なんていうか、バックスラッシュがデフォルトならいいのになぁ。


2.バグ
ログイン画面もしくはスリープ復帰後のパスワード入力画面で「英数キー」もしくは「カナかなキー」を押してしまうと、それ以後一切キー入力が出来なくなる。
マウスでポインターを合わせてパスワードを入力してしまえば問題ないが、その途中で上記のキーを押しても同様の状態になる。
所有している2台共同じ状態になるので、MAC OS Xのバグ?と思っている。

ちなみに片方はATOKが入っていないので「ことえり」を使っている。
キーボードは両方ともJIS配列。

なんで〜?