programming

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

ループの基本形です。テンプレート引数をデクリメントして再帰的に呼び出すことで実現することができます。 template <int N>struct UNROLL { static void iteration(int i) { cout<< i <<endl; UNROLL<N-1>::iteration(i+1); } }; template <> struct UNROLL<0>{ static void iterati</endl;></int>…

EclipseでProcessingを動かす

参考サイト(英語)→http://processing.org/learning/tutorials/eclipse/ Eclipseを導入してからのお話です。 新しいプロジェクトを作る File→New→ProjectでJava Projectを作成。 ライブラリの追加 processing/lib/core.jarがprocessingのコアライブラリのよう…

AS3覚え書き6 :テキスト

TextFieldクラス テキストを表示するには、TextFieldクラスを利用します。TextFieldクラスのプロパティには以下のものがあります。 var myTextField :TextField = new TextField(); myTextField.text = "12345"; addChild(myTextField); 色の設定 myTextFiel…

AS3覚え書き7 :音声

音声ファイルの再生 音声を扱うクラスはSoundクラスです。これはEventDispatcherクラスの派生クラスであり、DisplayObjectは継承していません。 外部から音声データを読み込む場合は、画像データのときと同様にロードが完了するまで待つ必要があります。その…

AS3覚え書き5 :画像

Actionscriptで画像を扱うにはBitmapクラスやBitmapDataクラスを利用します。 BitmapDataクラス Bitmap画像の各画素データを記憶するクラスです。 プロパティ width:int height:int 幅と高さ メソッド 画素値の取得 getPixel(x:int, y:int):uint getPixel32(…

AS3覚え書き5 :フィルタ

FilterはBitmapFilterの派生クラスとして様々なものが定義されています。 DisplayObjectクラスにはfilterという配列のプロパティを持っており、この表示オブジェクトにかけたいフィルタを格納します。 フィルタの追加 各種フィルタはflash.filtersで定義され…

FlashDevelop+AS3でクラスを作成する

プロジェクトの作成 Project>New ProjectからAS3 projectを選択 Mainクラスの作成 必須です。プロジェクトを作成すると自動生成されています。 package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { publ…

表示オブジェクト(DisplayObject)のクラス構造

DisplayObjectのクラス継承関係 Actionscriptでは組み込み型以外はすべてObjectクラスを継承しています。グラフィクスを描くためのSpriteやMovieClipクラスや画像を表示するためのBitmapクラスなど、基本的に表示するものは全てDisplayObjectを継承していま…

AS3覚え書き3 :グラフィクス

絵を描くにはSpriteクラスのgraphicsプロパティを利用します。 簡単なSampleクラスを例にとって基本的な図形を描いてみます。 package { import flash.display.Sprite; public class Sample extends Sprite { public function Sample():void { myDrawRect();…

AS3覚え書き4:イベント

AS3では、イベントの仕組みはEventDispatcherクラスで定義されています。SpriteやMovieClipなど代表的なクラスは全てEventDispatcherクラスを継承しているのでイベント処理を行うことができます。 イベントリスナー イベントを受け取るための処理をイベント…

matplotlibで3Dグラフを描画する

準備 データ処理用にnumpy、プロット用にpyplot、3次元なのでmpl_toolkits.mplot3dをインポートします。 from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np 描画するデータの作成 3次元で描画するにはメッシュ(2…

可変個数の引数について

pythonでは、*argsという書式を使うと関数へ可変個数の引数を渡すことができます。 def function(arg1, arg2, *args): print "arg1:", arg1 print "arg2:", arg2 for arg in args: print "arg:", arg function(0, 1, 2 , "aaa", "bbb") arg1: 0 arg2: 1 arg:…

matplotlibをwxPythonで扱う

matplotlibで描いたグラフをwxPythonのパネル上に表示できると、matplotlibの機能を直接利用できるアプリケーションを作成することができます。次のコードは、3次元のグラフをパネル上にプロットさせて表示させた例です。 import matplotlib matplotlib.inte…

matplotlibで画像を表示する

matplotlibで画像を表示させるための手順について。 matplotlibはPILを利用して画像の描画を行っているため、PILの機能に準じた処理になります。PILを使って画像の値を配列形式として読み込む作業を、matplotlibを使うと簡単に行うことができます。 画像の読…

PyOpenGL3.0について

PyOpenGLはOpenGLをPythonで扱うためのライブラリです。 PyOpenGL3.0のインストール PyOpenGL3.0の公式サイトhttp://pyopengl.sourceforge.net/documentation/installation.html Downloads>PyOpenGLからダウンロード。PyOpenGL-3.0.1.win32.exeを起動すると…

AS3覚え書き2 :クラス

package パッケージを読み込むには次のようにimport文を用います。 import package名.クラス名 import package名.* //指定したpackage内の全てのクラスを読み込む クラスの定義 クラスおよびメンバ変数とメソッドの定義は次のようにpackageの中に記述します…

テンプレートメタプログラミング (条件分岐)

条件分岐 コンパイル時に条件分岐を行うためのテンプレートの使い方です。 テンプレート引数にtrueまたはflaseを指定すると、それぞれ100,200が代入されるようにしてみます。 //テンプレート引数にtrueを入れた場合 cout << 100 << endl;//100 //テンプレー…

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…

ビューポート変換の式

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…