iPhoneでオブジェクトを回転させる
iPhoneでディスプレイ上に表示できるオブジェクトを回転させる為にはアフィン変換を使う必要があります。
しかしアフィン変換について熟知している必要はありません。Cocoaフレームワークが多くの機能を提供してくれます。

アフィン変換を行う為にはC関数として用意されている CGAffineTransform~ を使用します。

UIオブジェクトは通常UIViewを継承しています。UIViewのtransformプロパティを変更することによりオブジェクトを回転させることができます。

例えば、UIButtonインスタンスを90度回転させる為には以下のように記述します。

button.transform = CGAffineTransformRotate(button.transform, M_PI_2);
ここで注意してほしいことは回転角度を M_PI_2 のようにラジアン値で指定していることです。ラジアン値は以下のようにデファインされています。

#define M_PI 3.14159265358979323846264338327950288 /* pi */
#define M_PI_2 1.57079632679489661923132169163975144 /* pi/2 */
#define M_PI_4 0.785398163397448309615660845819875721 /* pi/4 */

デフォルトに戻すには以下のように記述します。

button.transform = CGAffineTransformIdentity;
Macではファイル圧縮にデフォルトで zip を使う。これは Windows との互換性を考慮してのことだと考えられるが、個人的には tar.gz 形式の方が好きだ。圧縮率、解凍速度、安定性、共に tar.gz の方が優秀である。1ギガを超えるようなソースコードを zip で圧縮、解凍してたらもう大変だ。

Macには tar.gz 形式に圧縮する tar コマンドが標準で入っている。Automator で以下のようにシェルを実行するようにすると右クリックのコンテキストメニューで簡単に tar.gz 圧縮ができるようになる。複数選択での圧縮もできる。

Cocoaを飲む-targz-automator

Cocoaを飲む-targz-image
床井先生という方のソースを拝借してなんとかできました。
自由回転手に入れました。。

しかし、動いてくれていますがどうなんでしょう・・内容は良く分かっていません。。
その内、理解していきたいと思います。
まあ当分、OpenGLだけに向き合っていかないとAndroidにやるのは早そうです
とりあえず、動いてくれてうれしいです。

床井さん有難う
Macではサービスを追加することでファイルやフォルダのパスを簡単に取得することができる。

まずAutomatorを起動しテンプレートからサービスを選択する。そして以下のようにサービスを作成する。

$Cocoaを飲む-パス取得

選択した項目をシェルスクリプトに引数として渡し、引数をそのままテキストとして出力しクリップボードにコピーしている。

このサービスを組み込むと、以下のように右クリックでパスを文字列として取得できる。
$Cocoaを飲む-パス取得2
Macには"サービス"という機能がある。

一般的にOSでサービスと言うと常駐型のデーモンプログラムを思い浮かべてしまうが、ここで言うサービスはアプリケーション間の通信機能である。
私の記憶では OS X v10.0 から存在する機能だ。

このサービス、 OS X v10.5 まではあまり使い勝手の良いものではなかったが OS X v10.6 からかなり使いやすくなっている。

例えば、Finder上で何かファイルを選択して Finder > サービス を選択してみる。
すると、選択したファイルで実行できるサービスが出てくる。
$Cocoaを飲む-サービス01

OS X v10.6 から何が良くなったかというと、このサービスの内容をユーザ自信がカスタマイズしやすくなったのである。標準でインストールされている Automator というスクリプト作成アプリでサービスが作れる。

例えば、私の Mac では Finder でイメージファイルを選択してサービスを選択すると以下のようなサービスが出てくる。
$Cocoaを飲む-サービス02
"PNGに変換"というサービスは私が作ったオリジナルのサービスである。このサービスを実行すると、その名のとおり選択したイメージファイルをPNGに変換してくれる。

Automator でサービスを作る方法は至って簡単で、起動後のテンプレート選択画面でサービスを選択するだけである。
$Cocoaを飲む-サービス03

今回紹介した"PNGに変換"は以下のように作る。
$Cocoaを飲む-サービス04

作成、保存したサービスは /Users/<ユーザ>/Library/Services に保存される。
一度サービス登録をすると、わざわざサービスメニューを選択しなくても右クリックで選択できるようになる。
今回は Finder を例にしたがサービスは全てのアプリで使用可能である。