頭の奥に閉めておいたというか、もう先生に返したというか、数学の復習シリーズです。今回はまず2D Object Transformation Matrixについて話しします。2D Object Transformation Matrix様々な場合でも使えます。例えばパソコンの画面にあるObjectの移動とか、実際Roboticsの移動計算とか、ですね。それでは、始まりましょう。
Scaling In X-Direction Only
座標(x,y)があり、最初はXの方向だけ移動すると考えます。
Matrixにはこうなります。
Kのこときなりますね。英語だとScaling Coefficientだと言います。まぁ、簡単にいいますとScaling Factorです。
もしあなたがObjectをXに2倍に距離をシフトしたいなら、このKは2すればよいです。
もしあなたがObjectをXに半分の距離をシフトしたいなら、このKを1/2すればよいです。
Exampleで話ししましょう。例えばいまその2つのPointsがあります。
そこでPoint(1,1)とPoint(2,1)にも2倍進みたいと考えています。
単純にKを2に置き換えればよいです。
実際計算してみますとX1’は(2,1)です。
そしてX2’は(4,1)です。
みんなさんもわかりと思いますが、Yはそのままの値でXだけは2倍になりましたね。
Scaling In Y-Direction Only
次はY方向だけ移動すると考えましょう。
Kの場所は一番左上から右下にシフトしました。
Xとあまり変わりませんので、図などはここで省略させていただきます。
例えばXはそのままで、Yを3倍にシフトします。
Kを3に置き換えます。
実際計算してみますとX1’は(1,3)です。
そしてX2’は(2,3)です。
今度はXは変わらず、Yだけは3倍になりましたね。
Scaling In Both X,Y Direction
ここまできたら、2つのXY移動動作を一つにまとめておきましょう。
あまり難しくなく、左上と右下の値をKxとKyの変数すればよいです。
では、もしXは4倍移動し、Yは1/2倍に戻すにするのであれば。
X1’は(4,½)になります。
X2’は(8,½ )になります。
はーい、お疲れ様です。