programming

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モジュールで定義されている例外オブジ…

Python2覚書 クラスの定義

下のひな形から、クラス定義に関する文法をチェックしてみます。 クラス名 可視性属性名型 可視性メソッド名(引数名:引数型)返却値型 Person publicnick_nameString publicgreet( ) Person private__nameString publicsmile(num:Number) private__face(num:N…

Python2覚書 クラスの継承

クラスの継承 継承は次のように記述します。 class subClass(superClass) 実際に例を見てみましょう。Personというsuperクラスを用意します。 class Person: def __init__(self, name): self.__name = name def introduce(self): print self.__name print ''…

Python Imaging Libraryのインストール

Windows Vista, Python 2.6の話。インストールは簡単ですが一応メモ。 Python Imaging Libraryのインストール http://www.pythonware.com/products/pil/から Python Imaging Library 1.1.7 for Python 2.6 (Windows only)をダウンロード 特に細かい設定なし…

線形リストを作ってみる その4 〜色リスト遊び

リストの中にクラスのインスタンスを入れてみます。 線形リストをウインドウに表示させることを想定して、それぞれのノードに位置と色の情報を保持させてみます。 位置情報は、C++でベクトルクラスを作成する〜その1 - white wheelsのメモで作成したVector2D…

Python覚書 Pythonについて

Pythonは手軽に扱うことができるプログラム言語のひとつで、次のような特徴があります。 スクリプト言語、対話的に利用することがができる 文法がシンプルで可読性が高い オブジェクト指向 ライブラリが豊富 初心者やプログラミングが専門外の方にもなじみや…

Python2覚書 文法規則

識別子の規則 識別子とは変数や関数に付ける名前のことです。先頭の文字は'A-Z', 'a-z', '_'を利用。その後の文字は'A-Z', 'a-z', '_', '0-9'のみ利用できる。@, $, %はNG。大文字と小文字の区別あり(petとPetは別) 予約語 Pythonの予約語は30語のみ。予約語…

Python2覚書 変数

変数の宣言 数値や文字列の宣言は以下のように行います。 x = 1 str = "ABCDE" 組み込み型 Pythonで予め用意されている組み込み型は以下の通り。 数値 文字列 リスト タプル 辞書 数値 数値型の種類は以下の4通りです。複素数を使うことができます。8進数は…

Python2覚書 制御構造

条件分岐 if文は下のように記述します。 if 式: 文 文 if str1 == "abc" and str2 != "def": str = "pqr" #文 else: str = "xyz" #文 if x == 1 and y != 0: z = 1 #文 elif x >= 2 or y < 0: z = 2 #文 else: z = 3 #文 if文とインデントの使い方 階層構造…

Python2覚書 関数とモジュール

関数の定義と呼び出し 関数はdef 関数名(引数)という形で定義します。また、戻り値は関数内でreturn文を使って記述します。 def function( str ): print str return 0 定義した関数は次のように呼び出すことができます。 function("Hello") モジュール モジ…

Python2覚書 ファイル処理

ファイルを開く ファイルを開くにはopen関数を使います。引数には、"ファイル名"、"読み込みモード"を文字列で指定。(ちなみに3番目の引数としてバッファサイズの指定も可能です) fileObject open (fileName,mode) 読み込みモードの種類: "r", "rb", "r+", "…

コピーコンストラクタと代入演算子が呼び出されるタイミング

オブジェクトのコピー インスタンスをコピーする際にはコピーコンストラクタと呼ばれるコンストラクタが暗黙のうちに呼び出されています。コピーコンストラクタと代入演算子を明示して実際に呼び出されているタイミングを確認してみます。次のArrayクラスの…

コピーコンストラクタの使い方について

コピーコンストラクタが必要な場合について考えてみます。 インスタンスのコピー クラスのインスタンスはメンバ変数を持っており、それぞれの値がメモリに保存されています。インスタンスをコピーすると、メンバ変数の値も丸ごとコピーされることになります…

EclipseとPydevでpython開発環境を整えてみる

Eclipseでpythonの開発環境を構築するまでの作業メモ。Pydevというプラグインをインストールしてから実際に利用するまでの手順について。2010/8/14 追記:諸事情によりもう一度入れ直しました。 Pydevの追加 versionは Eclipse: Helios Release (3.6) & 日本…

線形リストを作ってみる その3

その2の続き。。。 線形リストのようなデータ構造は、int型以外にもfloat,double,boolなどいろいろな型を扱うことができると便利です。いろいろな数値型を扱えるように改造してみたいと思います。 Nodeクラスのテンプレートクラス化 Nodeに好きな型を入れら…