タグ

2010年3月24日のブックマーク (10件)

  • C++とwin32とDirectXとBoostとLuaで作る弾幕シューテイング講座 - 名古屋313の日記

    C++, win32, DirectX, boost, Lua | 12:22はじめることにしました。これに合わせてソースコードが見やすくなるようにブログデザインを変えてみました。私はアマチュアプログラマであり全て独学でやってきたので間違ったことや非効率なコードを書いてしまうことが大いに予想されます。なにかあればコメントやついったーでお知らせ下さい。当方の環境はVisualC++2010を使いwin32、DirectX、Boost、Lua等のライブラリに対してパスが通っているものを想定しています。設定としては、警告レベルを最大に、警告をエラーにすることが正義という信念から/W4、/WXを指定、何だかんだ言ってUNICODEは面倒臭いのでマルトバイト文字セットを指定しています。この環境、設定に合わせて書いていくつもりなので、他の環境の場合は適宜脳内で変換してください。第1回〜ウィンドウを表示

  • JavaScriptが遅い4つの原因とは?

    1つ前の記事「JavaScriptをいかに高速化するか、IE9、Firefoxの取り組み」では、IE9とFirefoxにおけるJavaScriptの高速化について紹介しましたが、そもそもJavaScriptの実行速度はなぜ遅いのでしょう? その理由について、Mozilla Japanテクニカルマーケティング担当の浅井智也氏が、スライド「Trace Monkey」でポイントをまとめています(このスライドはタイトルから分かるとおり、Firefoxの当時の新しいJavaScriptエンジン「Trace Monkey」を紹介するために1年以上前に作成されたスライドですが、1つ前の記事を見ると、ここで示された課題はいまも変わっていないようです)。 全67枚のスライドの20枚目から24枚目の5枚を以下に紹介します。 JavaScriptが遅い原因は、以下の4点にまとめられています。 インタープリタ型言

    JavaScriptが遅い4つの原因とは?
  • その8 4分木空間分割を最適化する!

    ホーム<ゲームつくろー!<衝突判定編 2D衝突編 その8 4分木空間分割を最適化する!(理屈編) ゲーム空間に置いたオブジェクトを総当りで衝突判定する事ははっきりと非効率だと言えます。ちょっと計算してみましょう。60FPSのゲームの1フリップ約16.6ミリ秒の内衝突判定に10%の時間余裕(1.66ミリ秒)を与えられたとします。もし1000回の衝突判定に1ミリ秒かかるなら(1000回/msec)、判定回数は1660回以下に抑えないと間に合いません。総当りだとこれは58オブジェクトくらいで限界です。判定時間が200回/msecならオブジェクトはたった18個で限界。これはどう考えても節約が無いとゲームになりません。 オブジェクトの全ての位置が決まった時、自分とぶつかる可能性があるのは自分の周りのオブジェクトだけです。遠い所にある物は判定する必要すらありません。そこで「空間をある程度制限してその中

  • 数値演算法 (2) 多倍長整数の演算

    前回、コンピュータ上での数値計算処理方法について紹介しました。二進数を使った計算を考えた場合、全ての計算を論理演算から構築することが可能です。今回はこの考え方を応用して、多倍長整数の演算について紹介したいと思います。 1) 多倍長整数の表現 「位取り記数法」を使って、任意の数を基数として数を表現することができることを前回説明しました。通常利用されている「10進法」で25という数が記述されているとき、これを16進法で表すと19、2進法で表すと11001になります。 基数として利用できる数に制限はないので、もっと大きな数を基数に使うこともできます。例えば10進法で表された12345678という数を1000進法で表せば(12)(345)(678)と記述することができます。ここで()内の数は"一桁の数"を表していることになりますが、1000個もの記号を用意するわけにもいかないので、中身は10進法

  • 検索アルゴリズム (4)文字列の検索 -2-

    検索アルゴリズム (4)文字列の検索 -2- 前章に引き続き文字列照合(string matching)のアルゴリズムから、この章ではBoyer-Moore(BM)法を紹介したいと思います。このアルゴリズムは、実用上最速な文字列照合アルゴリズムとして文字列検索ツールやエディタで使用されているようです。 1)BM法 BoyerとMoore、また両者とは別にGosperが考案したBoyer-Moore(BM)法の最大の特徴は、パターンを末尾側から逆方向に比較するということです。 テキストとパターンの先頭をそろえた後、今までのアルゴリズムではパターン先頭とテキスト先頭を比較するのですが、BM法ではパターン末尾(先頭からm文字目)の文字と、テキストのm文字目の文字を比較します。もし一致していたら注目文字を1つ前にずらし、末尾側から逆方向に比較していきます。もし不一致が検出されたら、不一致を引き起

    hitsujibane
    hitsujibane 2010/03/24
    BM法と多バイトコードの扱い
  • 検索アルゴリズム (3)文字列の検索 -1-

    テキストとパターンの中で、両側に下線が引かれた文字は一致したもの、パターンのみに下線が引かれた文字は不一致を検出した個所を示します。 それでは早速サンプルを示したいと思います。 int strlen( s ) char *s; { int i; for ( i = 0 ; s[i] != '\0' ; i++ ); return( i ); } int strncmp( s1, s2, len ) char *s1,*s2; int len; { int i; int cmpret = 0; for ( i = 0 ; i < len ; i++ ) if ( ( cmpret = s1[i] - s2[i] ) != 0 ) break; return( cmpret ); } char *strstr( Text, Pattern ) char *Text, *Pattern; { i

    hitsujibane
    hitsujibane 2010/03/24
    総当り法とKMP法
  • Text algorithms

    M. Crochemore, W.Rytter, TEXT ALGORITHMS

    hitsujibane
    hitsujibane 2010/03/24
    文字列探索アルゴリズムの教科書
  • ESMAJ

    Contents EXACT STRING MATCHING ALGORITHMS Animation in Java Christian Charras - Thierry Lecroq Laboratoire d'Informatique de Rouen Université de Rouen Faculté des Sciences et des Techniques 76821 Mont-Saint-Aignan Cedex FRANCE

    hitsujibane
    hitsujibane 2010/03/24
    文字列探索アルゴリズム集
  • Pattern Matching Pointers (maintained by Stefano Lonardi)

    Combinatorial Pattern Matching addresses issues of searching and matching strings and more complicated patterns such as trees, regular expressions, graphs, point sets, and arrays. The goal is to derive non-trivial combinatorial properties for such structures and then to exploit these properties in order to achieve improved performance for the corresponding computational problem. A steady flow of h

    hitsujibane
    hitsujibane 2010/03/24
    文字列探索アルゴリズムのリンク集
  • Lanczos関数による画像の拡大縮小

    Lanczos関数を使って画像を拡大縮小すると、高品質な画像が得られるのだそうだ。 その仕組みを知りたいと思っていつも通りGoogleのお世話になったが、仕組みを解説した情報が見つからない。 見つかるのはLanczosという名前の紹介や、画像処理ソフトの紹介ばかり。 もっとも、探し方が悪いのかもしれないけど。 なぜ高品質な画像が得られるのか? 他の方法とは何が違うのか? 断片的な情報から調べていって、その理由が理解できた。 はっきり言ってこれを解説するのは難しい! Lanczos関数 まずはLanczos関数について。 そもそもLanczosを何と読むのかが疑問だったが、ランツォシュと読むらしい。 数学者の名前。 Lanczos sinc関数とかLanczos窓関数とかLanczosフィルタとか、人によって色々な呼び方をしていて、正しい呼称がどれなのかはっきりしないが、Lanczos wi