2013-01-01から1年間の記事一覧

4次元の回転行列

こんにちは、株式会社CFlatです。前回は下図のように4次元超立方体を2次元ディスプレイに表示しました。 今回は4次元超立方体を回転させてみます。 zw平面で回転 次元がいくつ増えても、ある平面を回転するだけなら回転行列の算出は難しくありません。 下図…

4次元から2次元への変換行列

2次元の正方形から1つ次元を増やしたら3次元の立方体になります。 3次元の立方体から1つ次元を増やしたら4次元の超立方体になります。今回は4次元超立方体を2次元ディスプレイに移す変換行列のお話です。 まずは3次元から2次元へ 例えば下記の絵は単なる線分…

C++とfinally(おまけ)

こんにちは、株式会社CFlatです。今回のタイトルはC++ですが、試しにC++以外の幾つかの言語におけるデストラクタやfinallyの相当機能について、少々見ていきたいと思います。 Java finallyとは別に、クラスにfinalize()メソッドを実装することができます。 f…

C++とfinally

C++

こんにちは、株式会社CFlatです。あれほど何でも取り込むC++がC++11になってもいまだに採用しない言語仕様で、他の言語にはよく採用されているもの。 幾つかありますが、代表的なものがGC(ガベージコレクション)とfinallyブロックでしょう。 ただ今回は、G…

オイラー角と回転行列

こんにちは、株式会社CFlatです。とあるお客さんからオイラー角の質問を受けたので少し調べてみました。 その際に計算結果は色んなサイトに載っていましたが、計算過程が見つからなかったのでメモしておきます。 オイラー角とは オイラー角とは3次元空間に…

KVO(key value observing, キー値監視)について

今回は便利なKVOについて紹介します。 KVOはKVC(key value coding)とペアになって使われるもので、特定のオブジェクトのプロパティが変化したことを 監視する場合などに使います。私も言葉は聞いたことがありましたが使う機会がありませんでした。今回実際に…

JavaScriptでコールバック連結 (2)

こんにちは、株式会社CFlatです。 一週挟みましたが、「JavaScriptでコールバック連結」の続きです。 それでは前回の処理の流れを、もう一度見ていきます。(1) ボタンを表示するためのアニメーションを実行する (2) スロットアニメーションを読み込む (3) (1…

Rails3でアイデア管理アプリ「Bulbo」をつくりました

僕個人が使いたいこともありましてRuby on Rails 3でアイデアを管理するためのWebサービス「Bulbo」をリリースしました。Bulboという名前は電球を意味するスペイン語から。閃きとかピコーンとかそういうわかりやすいイメージで名づけました。Bulbo 今のとこ…

Rails3でアイデア管理アプリ「Bulbo」をつくりました(旧)

先日、『Rails3でアイデア管理アプリ「Bulbo」をつくりました』という記事を書きましたが、この記事のみいいねボタンが押せないという問題が発生していることがわかりました。「アカウント」「カラースキーム」という単語がまずかったようなので、それらを置…

JavaScriptでコールバック連結 (1)

2012年11月からスタートした本ブログも、めでたく今週で20記事目を迎えました。今後とも株式会社CFlatをよろしくお願いいたします。 さて、本題へ。 JavaScriptは、登場直後である1990年代中頃を除けば、言語自体の機能としてはさほど大きな変化を経験しては…

CreateJSでハマったこと

長らく仕様策定に手間取っていたHTML5が大きく推進することになった理由の一つには、やはりAppleがiPhoneのFlashへの非対応を発表したことがあるでしょう。HTML5自体はいまだ完全には標準化されていませんが、主要ブラウザでは既にcanvasによる描画処理をサ…

doubleのRadixSort

バケットソートの欠点を補える基数ソート(RadixSort) バケットソートは計算量O(N)の素晴らしい必殺技ですが、 如何せんバケツのサイズに限度があり、用途が限定されます。 この問題を、痛みを伴いながら一部解決できる方法として、基数ソートが上げられます…

BitbucketにSSHでアクセスする(複数アカウントもおっけー)

BitbucketのリポジトリにはHTTPSでアクセスすることができますが、毎回パスワード入れるのも面倒だし、pushする情報が多すぎてエラーになることもあります。SSHを使えばそれを解消できるのですが、公式以外にあまり情報がなかったんでここに書いておくことに…

LAN内のSubversionで管理されているソースをGitでなんとかしたい(その2)

開発プロセス このプロジェクトでは機能X、機能Y、機能Zといった機能単位でのコミットをすることになっていました。とは言え1つの機能に数日かかるような規模でしたので、全て完了してからコミットするというのは非現実的です。Gitはコミットに対してあとか…

LAN内のSubversionで管理されているソースをGitでなんとかしたい(その1)

ソース管理のためのSubversionのサーバーを自社内に持つクライアントと仕事をしたことがあります。SubversionのサーバーはLANにあるので社外からのアクセスは許されていません。この仕事は常駐ではなかったのでSubversionのサーバーに直接アクセスすることは…

Windowsストアアプリ(XAML)でコレクション要素を思ったとおりに並べたい

今回は弊社初のWindowsストアアプリ「Ippin」の開発に絡めた記事です。すごく基本的な内容なのかもしれませんが情報が少なかったので残しておきます。Windowsストアアプリ イッピン(Ippin) | 株式会社CFlatXAMLではコレクションな要素を画面上に並べて配…

OpenGLをC++11でラップしてみんとてするなり 第7回

今回のテーマはテクスチャ。今までと比べると単に作って破棄する機能が増えただけに見えて、実はかなり厄介です。 というのも、インスタンスの作成から破棄までの間でコンテキストが切り替わらない今までの機能とは異なり、コンテキストが切り替わってもデー…

OpenGLをC++11でラップしてみんとてするなり 第6.5回

そういえば、gl::Matrixクラスの各種操作がMatrixにしか対応していなかったので、Matrixにも対応するようにしましょう。 まずは、行列操作関数をまとめた次のようなクラスを作り、必要な型(floatとdouble)に対して特殊化をします。それ以外の型に対しては…

OpenGLをC++11でラップしてみんとてするなり 第6回

それでは今回は、行列計算のラッパークラスを作りたいと思います。 ●4x4行列 OpenGLでの行列のメモリモデルは、次のようになっています。次元数を任意に拡張して、さらに要素型も任意にできるよう、次のようなクラスにしてみます。 今回は長くなるので省きま…

右辺値参照とムーブセマンティクス

資料だけならWeb上に多かれど、いまいちピンとこないのがこの2つの機能ではないかと思います。大体この2つはセットにして語られるので、どこからどこまでが右辺値参照の機能でどこからどこまでがムーブセマンティクスの機能なのかを混同してしまう、というこ…

OpenGLをC++11でラップしてみんとてするなり 第5回

早速、前回(第4回)で作ったDepthTestのインスタンスを、gl::Contextのメソッド中で作成するようにしてみます。 gl/Context.h namespace gl { class Context : noncopyable<Context> { // 一部省略 public : DepthTest depth_test(bool enabled) { return DepthTest(</context>…