行列と幾何変換

平面上の点$(x,y)$を新しい点$(x',y')$に変換すること、所謂幾何変換を考えます。

内容の概要:

1. 平面上の点とグラフの表示

Octaveでは、plotを使って、点の表示ができます。

使い方:

例1:

(1,0)と (2,3)2つの点を「+」のマックで表示するために、下の命令を使用する。

配列を使って、点列を描画します。

Octaveの中では、「:」は「すべて」の意味をもっています。即ち、「すべての行」、または、「すべての列」です。

例: p_list =[ 0, 1, 1 ; 0, 0, 1] について、

注意

これからの計算では、長さがnである点列を$2\times n$の形の行列で表現します。そうすると、行列の各列は点列の点に対応します。

例2:

三点(0,0), (1,0), (1,1)を描いてみます。

ここで、「axis("equal")」によって、x軸とy軸のアスペクト比を1にすることができます。

演習 1:「家」の輪郭を書いてください。

ヒント:以下の三角の点列と四角の点列を使って、シンプルな「家」を描けます。

家の描画に使用される2つの点列を一つの点列にしてください。適当に、窓、ドアを追加しても良いです。

2. 線形変換

2.1 拡大・縮小変換

点の$x$座標または$y$座標を$t$倍にすることで、図形の拡大と縮小ができます。

$x$方向で$t$倍にする変換

$$ x'=tx,y' = y \Leftrightarrow \left(\begin{array}{c} x' \\ y' \end{array}\right) = A \left(\begin{array}{c} x \\ y \end{array}\right) \quad A=\left(\begin{array}{cc} t & 0 \\ 0 & 1 \end{array}\right) $$

$y$方向で$t$倍にする変換

$$ x'=x,y' = ty \Leftrightarrow \left(\begin{array}{c} x' \\ y' \end{array}\right) = A \left(\begin{array}{c} x \\ y \end{array}\right) \quad A=\left(\begin{array}{cc} 1 & 0 \\ 0 & t \end{array}\right) $$

演習2

演習1で考えた「家」を$x$方向$2$倍、$y$方向$1.5$倍に伸ばして、描いてください。