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

AS3覚え書き1

ActionScript3の文法についてまとめたものです。 変数の宣言 var:int; num:Number=1.3; str:String="abc"; 定数 const PI:Number=3.14; 型 int:整数 Number:数値 String:文字列 Boolean:ブール 文字列型 文字の連結 var str:String = str1 + str2 + "."; 文…

テンプレートを使って配列を作る

静的な配列をコンパイル時に作成するための簡単なコードです。テンプレートを使わずに要素数を自由に指定するなら、#define文などで要素数を定義するか、new・deleteでヒープ領域に要素数だけ確保することになると思います。テンプレートの仕組みを利用する…

テンプレートを使って簡単な漸化式を計算する

コンパイル時に値を計算するための方法についてです。フィボナッチ数列を例にとってみましょう。 この数列の答えはこのようになります。 n 0 1 2 3 4 5 6 7 8 ... 1 1 2 3 5 8 13 21 34 ... 実際に4つほど書き下したものが下の式です。 これに対応するコード…

テンプレートメタプログラミング

定数 コンパイル時に定数を代入する方法を考えてみます。 Step0 コンパイル後の式がこのようになるためにはどうすればいいでしょうか? cout << 1 << endl; enumで適当な変数名を定義すれば、コンパイル時にプリプロセッサが勝手に数字に置き換えてくれます…

py2exeでexeファイルを作る

2010/3/23 python2.6, Windows Vista上で動作確認。Distutilsは、開発者がPythonモジュールを配布・インストールするため環境構築を行うパーッケージです。 Distutilsの拡張版として提供されているpy2exeというモジュールを使って、Distutilsの従来のコマン…

NumPyのarrayとPILの変換

Python Imaging LibraryのImageクラスのデータをNumpyのarrayとして扱うための方法について。 Numpyの関数を使って直接pixel値を書き換えることが目標です。 まずは両方のライブラリをインポートしておきます。 import numpy import Image PILからNumpyのarr…

テンプレート関数とテンプレートクラス

テンプレートを使った関数とクラスについてのまとめです。 テンプレートが必要な理由 float型の要素を持つベクトルと、int型の要素をもつベクトルを作成することを考えてみます。ベクトル同士の演算は型に依存しない処理ですが、それぞれの型に対してfVector…

C++で作るベクトルクラス その3 〜可変長ベクトル

可変長でN個の要素を持つベクトルを作成するときの注意事項について。 メンバ変数 ベクトルクラスが持つべき情報は、要素の個数と1次元配列の先頭アドレスになります。 class Vector{ private: int m_size; float* m_val; コンストラクタによる初期化につい…

ビューポート変換の式

2次元ワールド座標から2次元ディスプレイ座標への変換式のメモです。 行列を使わずに直接計算しています。 class ViewportTransform{ protected: //Device(Screen)座標系における原点座標 float m_screenOriginX; float m_screenOriginY; //倍率 screen / wo…

C++で複素数クラスを作成する

STLのcomplexクラスについて C++で複素数を扱うにはSTLで用意されているcomplexクラスを利用します。complexクラスはテンプレートで定義されているので、型を指定して扱うことができます。例えば、double型の複素数を扱いたい場合は、complexと記述します。 …

wxPythonのマウスイベント一覧

wxPythonで扱うことのできるマウスイベントは以下の通り。 左ボタン EVT_LEFT_DOWN EVT_LEFT_UP EVT_LEFT_DCLICK 中央ボタン EVT_MIDDLE_DOWN EVT_MIDDLE_UP EVT_MIDDLE_DCLICK 右ボタン EVT_RIGHT_DOWN EVT_RIGHT_UP EVT_RIGHT_DCLICK マウス移動 EVT_MOTIO…

wxPythonのwx.ImageとPython Imaging Libraryの変換方法

wxPythonで用意されているImageやBitmapをPython Imaging Libraryで使うにはどうすればいいのか?という話。 wxPythonはさまざまなフォーマットの画像を読み込めるので便利です。wx.ImageとPILを相互変換できるなら、 読み込んだwxImageをPython Imaging Lib…

STLのalgorithmの練習1

STLのalgorithmを使うと、vectorやlistなどのコンテナに対してソートや置き換え、検索などを簡単に行うことができます。algorithmが提供している関数ごとに違いはありますが、大まかな書式は次のようになります。 std::<関数名>(<前iteretor>,<後ろiteretor>,…

inline関数をヘッダに書く際の注意点

inlineメンバ関数を含むクラスを作成するときにヘッダと実装ファイルを作成する方法について。 下のように、2つのcppファイルで利用するクラスAを作成するとしましょう。 main.cpp #include "A.h" int main(){ A a; a.method(); return 0; } A.hA.cpp #ifnde…

C++で2次元アフィン変換クラスを作る

2次元座標においてある点を別の点に移す変換のなかで、下の基本変換の合成変換として表現できるものをアフィン変換と呼びます。 例えば、(1,2)だけ平行移動させて、原点を中心に30°回転させる変換は、と表すことができます。 平行移動(x: ,y: ) 拡大縮小 回…

C++で作るベクトルクラス その2

3次元版を作っていて気づいたこと。 ベクトルクラスを作るときに、x,y,zというメンバを使ってコードを書くか、配列v[i]を利用してコードを書くか迷うところですが、3次元ならx,y,zを使って書いた方が分かりやすいかもしれません。↓ Vector3D.h class Vector3…

C++で作る行列クラス その1

3×3の行列クラスを作ってみます。 こちらも、できるだけ数式に近い形で扱いたいということで演算子のオーバーロードを使って実装してみます。行列クラスをこんな感じで使うのが目標。 Matrix3D A( 1, 0, 0, 0, 1, 0, 0, 0, 1 ); Matrix3D B( 2, 3, 4, 3, 5, …

wxPythonでGUIアプリを作る GUIコンポーネントとサイザー

GUIを作るために必要な要素(Frame,button,text,textcontrolなど)はwxWindowクラスの派生クラスとして提供されています。GUIを設計するためにこれらの要素を一つずつフォームに配置していきます。 例えばwxFrameがwxMuneBarやwxPaneを含んでいて、さらにwxPan…

wxPythonでGUIアプリを作る 〜XRCでGUI設計

XRC wxPythonでGUIアプリを作る GUIコンポーネントとサイザー - white wheelsのメモの続き。 GUIを作るには各コンポーネントをサイザーの上に載せて設計するというのが前回の話です。 簡単なGUIならまだしも、複雑なインターフェースを作ろうとすると、コー…

wxPythonのwxImageで画像を表示する

画像を読み込んで表示させる簡単な例です。(file open error == IOErrorの処理を入れないといけない) 利用するクラスはwx.Image。初期化で読み込む画像ファイルパスを指定します。 Imageインスタンスそのままでは表示できなくて、bitmapに変換してから初めて…

簡単にウインドウを作成するコード その2

ウインドウを簡単に作成するコード その1 - white wheelsのメモのつづき Windowクラスを作成しましたが、残念ながらstaticなWindowProcedureの中では、静的でない変数やメソッドを利用することができません... WindowProcedureの中でWindowBaseインスタンス…

wxPythonでGUIアプリを作る フレーム&メニュー

参考サイトGetting Started - wxPyWiki wxPythonは、マルチプラットフォームなGUIアプリを比較的簡単に作成することができるモジュールです。wxPythonの使い方について簡単にまとめてみます。まずはフレームを単に表示するプログラム。 import wx app = wx.A…

wxPythonでGUIアプリを作る イベント処理

メニューを選択したときのイベント処理を実装してみましょう・ イベント処理 import wx class MyFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, title=title, size=(200,100)) filemenu= wx.Menu() menuExit = filem…

Python Imaging Libraryのshow()で画像が表示されない

Windows VistaでWindows photo viewerが規定のプログラムとして設定されているとなぜか画像が表示されませんでした。 ↓ bitmapファイルの関連付けをとりあえずpaintにしてshow()メソッドを呼び出すとうまく表示されます。Irfan Viewを入れていたのでそちらに…

Python Imaging Libraryの使い方 〜The Image Module

Python Imaging Libraryの関数を使いながらのメモです。 テスト用のモジュールTestPIL.pyを作成し、同じディレクトリに全て同じサイズの適当なRGB画像"test.bmp","test2.bmp","mask.bmp"を用意して実行してみました。以下使えそうな関数をひたすらピックアッ…

ウインドウを簡単に作成するコード その1

Windowsでウインドウを一つ開いて何か処理を行うコードを簡単に書くにはどうすればよいのか実験してみました。 完成させたいコードのイメージ。↓OpenFrameworksっぽくしてみたい WindowBaseがAppBaseを持っていて、マウスに反応してAppBaseのイベント処理を…

SciPyを使う

Pythonの科学計算ライブラリ。Windows & Python2.6でSciPyを使ってみる。 ライブラリはhttp://new.scipy.org/download.htmlからダウンロードできます。 SciPyはNumPyのversion 0.4.x以上をベースに作成されているので、念のためNumPy→SciPyの順にインストー…

C言語で作る添え字フリーなベクトル&行列

配列の添え字はいつも0からはじまります。1から使えるようにするにはどうすればいいでしょうか。例えば使っているイメージはこんな感じ。↓ double* v = cvector(1,3); v[1] = 1; v[2] = 2; v[3] = 3; print_cvector(v,1,3); free_cvector(v,1,3); C言語を使…

NumPyを使ってみる

Windows, Python2.6, 2010/3/8の話題。 NumPyはPythonの数値計算ライブラリです。 http://new.scipy.org/download.htmlからダウンロードできます。 SourceForge site for NumPyからnumpy-1.3.0-win32-superpack-python2.6.exeをダウンロード 特に設定なしに…

Python2覚書 例外処理

try,catch構文 例外が発生した場合の処理は、try,catchを使います。 例外の種類にかかわらず一括処理を行う場合 try: print 1/0 except: print "error" else: print "OK" error例外の種類に応じて処理を変える場合 sysモジュールで定義されている例外オブジ…