線形ではないように見える透視変換がなぜ行列で表現できるのか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 線形ではないように見える透視変換がなぜ行列で表現できるのか?

Re: 線形ではないように見える透視変換がなぜ行列で表現できるのか?

#4

by Matrix太郎 » 4年前

ああ、Wの意味って、それだったんですね。
確かに最終的な座標を求めるときは最後に
x = X/W
y = Y/W
z = Z/W てやってますから、
w に z の値を突っ込んでおけば z に反比例させることができますね。
ありがとうございました!

Re: 線形ではないように見える透視変換がなぜ行列で表現できるのか?

#3

by usao » 4年前

「同次座標」とかで調べると良いかと思います.

スクリーン上への投影座標は,XYout,Yout,ZoutをWoutで割ることで得られます.
要は,
その4x4行列を掛けただけでは,「反比例」に対応する割り算はまだ行われていない,ということになるでしょうか.

Re: 線形ではないように見える透視変換がなぜ行列で表現できるのか?

#2

by Matrix太郎 » 4年前

すみません
Zout = 定数/ Zin は
Xout = 定数 / Zin の間違いです

線形ではないように見える透視変換がなぜ行列で表現できるのか?

#1

by matrix太郎 » 4年前

座標変換に使っている行列ってやつは、線形代数でてくるヤツですよね。

入力座標を Xin Yin Zin Win
出力座標を Xout Yout Zout Wout

としたとき、

Xout = a*Xin + b*Yin + c*Zin + d* Win
Yout = e*Xin + f*Yin + g*Zin + h* Win
Zout = i*Xin + j*Yin + k*Zin + l* Win
Wout = m*Xin + n*Yin + o*Zin + p* Win

という式があったときに、この係数 a〜p だけを抜き出したものが行列になるわけですよね

a b c d
e f g h
i j k l
m n o p

ここで不思議なのは透視変換です。
透視変換って、たとえばスクリーン上でのx座標はz距離に比例ではなく反比例すると思うんです。

zが遠くなればなるほど、限りなくxはゼロに近づきますよね。このとき、Zout = 定数/Zin のような形になると思うのですが、行列で表すのは Zout = 定数 * Zin の形だけですよね?何故この反比例の形が行列で表現できるのでしょう???

ページトップ