拡大縮小とせん断
記号の意味
- ベクトル- 矢印付きの文字
- 長さ- ベクトルの大きさ
- 単位ベクトル- 長さ1のベクトル
- 内積- 2つのベクトルから数値を計算
- シータ- 角度を表すギリシャ文字
- 余弦- 角度から比率を求める関数
概要
拡大縮小(スケーリング)とせん断(シアー)の行列変換を使って、オブジェクトのサイズや形を変える方法を学びます。
スケーリング(拡大縮小)
スケーリングは、オブジェクトのサイズを変える変換です。キャラクターを大きくしたり、ズーム効果を作ったりできます。
実用例
- キャラクターの大きさ変更: プレイヤーのサイズを変える
- ズーム効果: カメラのズームイン・ズームアウト
- パワーアップ演出: アイテム取得時に一瞬大きくする
スケーリング行列
等方性スケーリング(縦横同じ倍率)
縦横を同じ倍率 で拡大縮小する場合:
例えば、2倍に拡大する行列は:
非等方性スケーリング(縦横別々の倍率)
x方向を 、y方向を で拡大縮小する場合:
例えば、横に2倍、縦に0.5倍(半分)にする行列は:
スケーリングの使い分け
- 等方性スケーリング: オブジェクト全体を拡大・縮小(形を保つ)
- 非等方性スケーリング: 縦横比を変える(引き伸ばす・潰す)
ゲームでは、ジャンプの着地時に少し潰すような演出で非等方性スケーリングがよく使われます。
JavaScriptでの実装
スケーリング行列の生成
JavaScript
点をスケーリング
JavaScript
インタラクティブデモ
x方向とy方向の倍率を個別に変更して、スケーリングの効果を確認しましょう。
スケーリング行列
X倍率
1.500.00
0.00
Y倍率
1.50スケーリングタイプ: 等方性(縦横同じ)