1.4K Views
August 31, 20
スライド概要
単位正方形の射影変換の 変換係数 2020/8/31 今給黎 隆
アジェンダ • 背景 • テクスチャ座標から位置座標 • 位置座標からテクスチャ座標
アジェンダ • 背景 • テクスチャ座標から位置座標 • 位置座標からテクスチャ座標
背景 • 四角形を3次元空間に配置すると、ひしゃげた形状に見える。 逆に言えば、ひしゃげた四角形の形状から奥行を含めた3次元 空間の配置を推測することができる • 本資料では、単位正方形と一般的な配置の四角形の対応付けを 行う行列の具体的な値を導出していく • なお、線形の有理多項式の範囲での変換(射影変換)を取り扱う 𝑣 𝑎𝑢 + 𝑏𝑣 + 𝑐 𝑥= 𝑔𝑢 + ℎ𝑣 + 1 𝑑𝑢 + 𝑒𝑣 + 𝑓 𝑦= 𝑔𝑢 + ℎ𝑣 + 1 ここで、スケーリングを一意に定めるため 分母の定数の項を1と置いた 𝑦 𝑥01 , 𝑦01 1,1 0,0 𝑢 𝑥00 , 𝑦00 𝑥11 , 𝑦11 𝑥10 , 𝑦10 𝑥
アジェンダ • 背景 • テクスチャ座標から位置座標 • 位置座標からテクスチャ座標
テクスチャ座標から位置座標 • 四角形を再分割して表示する場合を考える。四角形の頂点の変 換が与えられた際に、パースを考慮して四角形を分割して表示 していく。この場合、テクスチャ座標を等間隔に分割して、各 テクスチャ座標から、位置を求める処理を行うので、テクス チャ座標から位置座標への変換を求める • 射影変換のaからhの8つの定数を求めていく。自由度は8つの為、 4点の2次元座標の対応がわかれば、定数を求めることができる 𝑎𝑢 + 𝑏𝑣 + 𝑐 𝑥= 𝑔𝑢 + ℎ𝑣 + 1 𝑑𝑢 + 𝑒𝑣 + 𝑓 𝑦= 𝑔𝑢 + ℎ𝑣 + 1 𝑣 𝑦 𝑥01 , 𝑦01 1,1 𝑥00 , 𝑦00 0,0 𝑢 𝑥11 , 𝑦11 𝑥10 , 𝑦10 𝑥
行列形式での定式化 • 先ほどの射影変換を行列で表記する 𝑎 𝑋′ 𝑌′ = 𝑑 𝑔 𝑤′ 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑢 𝑣 1 𝑥′ 𝑋′ = 𝑤′ 𝑌′ 𝑦 = 𝑤′ ′ • 有理化の処理を統一的に記述するために次のように表記する 𝑎 𝑥′𝑤′ 𝑦′𝑤′ = 𝑑 𝑔 𝑤′ 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑢 𝑣 1 • この問題は一般的には下記の行列方程式をa~hについて解けばよい 𝑥0 𝑤′0 𝑦0 𝑤′0 𝑤′0 𝑥1 𝑤′1 𝑦1 𝑤′1 𝑤′1 𝑥2 𝑤′2 𝑦2 𝑤′2 𝑤′2 𝑥3 𝑤′3 𝑎 𝑦3 𝑤′3 = 𝑑 𝑔 𝑤′3 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑢0 𝑣0 1 𝑢1 𝑣1 1 𝑢2 𝑣2 1 𝑢3 𝑣3 1
本資料での問題の具体化 • しかしながら、先の行列方程式は、非正方行列の方程式であり、 明示的に解くのが難しい。 • 今回は、下の単位正方形を異なる四角形に変換する問題とする 𝑣 𝑦 𝑥01 , 𝑦01 1,1 𝑥00 , 𝑦00 0,0 0,0 → 𝑥00 , 𝑦00 𝑥00 𝑤′00 𝑐 𝑦00 𝑤′00 = 𝑓 1 𝑤′00 𝑢 1,0 → 𝑥10 , 𝑦10 𝑥10 𝑤′10 𝑎+𝑐 𝑦10 𝑤′10 = 𝑑 + 𝑓 𝑔+1 𝑤′10 𝑥11 , 𝑦11 𝑥10 , 𝑦10 𝑎 𝑥𝑤′ 𝑦𝑤′ = 𝑑 𝑔 𝑤′ 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑢 𝑣 1 𝑥 0,1 → 𝑥01 , 𝑦01 𝑥01 𝑤′01 𝑏+𝑐 𝑦01 𝑤′01 = 𝑒 + 𝑓 ℎ+1 𝑤′01 1,1 → 𝑥11 , 𝑦11 𝑥11 𝑤′11 𝑎+𝑏+𝑐 𝑦11 𝑤′11 = 𝑑 + 𝑒 + 𝑓 𝑔+ℎ+1 𝑤′11
係数、c, f • cとfは、原点の変換から直接求めることができる 0,0 → 𝑥00 , 𝑦00 𝑥00 𝑤′00 𝑐 𝑦00 𝑤′00 = 𝑓 1 𝑤′00 𝑤′00 = 1 𝑐 = 𝑥00 , 𝑓 = 𝑦00
W座標の関係式 • 求めた c とfを他の座標の対応関係に代入する 𝑥10 𝑤′10 − 𝑥00 𝑦10 𝑤′10 − 𝑦00 𝑤′10 − 1 𝑎 = 𝑑 , 𝑔 𝑥01 𝑤′01 − 𝑥00 𝑦01 𝑤′01 − 𝑦00 𝑤′01 − 1 𝑏 = 𝑒 , ℎ 𝑥11 𝑤′11 − 𝑥00 𝑦11 𝑤′11 − 𝑦00 𝑤′11 − 1 𝑎+𝑏 = 𝑑+𝑒 𝑔+ℎ • 前の2式の和が3つ目の式になるので、次の関係式が得られる 𝑥11 𝑤′11 − 𝑥00 𝑦11 𝑤′11 − 𝑦00 𝑤′11 − 1 𝑥10 𝑤′10 + 𝑥01 𝑤′01 − 2𝑥00 𝑎+𝑏 = 𝑑 + 𝑒 = 𝑦10 𝑤′10 + 𝑦01 𝑤′01 − 2𝑦00 𝑔+ℎ 𝑤′10 + 𝑤′01 − 2 𝑥10 𝑤′10 + 𝑥01 𝑤′01 − 𝑥00 𝑥11 𝑤′11 𝑦11 𝑤′11 = 𝑦10 𝑤′10 + 𝑦01 𝑤′01 − 𝑦00 𝑤′11 𝑤′10 + 𝑤′01 − 1 • これをwを列ベクトルとして式を整理すると、下記になる 𝑥11 𝑥10 𝑦11 𝑤 ′11 = 𝑦10 1 1 𝑥01 𝑦01 1 −𝑥00 −𝑦00 −1 𝑤′10 𝑤′01 1 𝑥10 𝑤′10 𝑤′01 = 𝑦10 1 1 𝑥01 𝑦01 1 −𝑥00 −𝑦00 −1 −1 • 逆行列を求めれば、w座標を求めることができる 𝑥11 𝑦11 𝑤 ′11 1
吐き出し法で逆行列を求めていく −1 × (−1) ÷ (𝑥10 − 𝑥00 ) −1 𝑥10 𝑥01 −𝑥00 1 0 0 𝑥10 𝑥01 𝑥00 1 0 𝑦10 𝑦01 −𝑦00 0 1 0 = 𝑦10 𝑦01 𝑦00 0 1 1 1 −1 0 0 1 1 1 1 0 0 −𝑥 1 00 −(𝑥01 − 𝑥00 ) 0 0 1 𝑥01 − 𝑥00 𝑥00 𝑥 −𝑥 10 00 𝑦10 −𝑦00 𝑦01 − 𝑦00 𝑦00 0 1 0 = 𝑥10 −𝑥00 1 1 −1 0 0 1 𝑥 −𝑥 10 1 𝑦10 −𝑦00 𝑥10 −𝑥00 𝑦10 −𝑦00 (𝑥01 𝑥10 −𝑥00 0 = 00 0 𝑦01 − 𝑦00 − − 𝑥00 ) 𝑦00 − 1 1 0 0 𝑦10 −𝑦00 𝑥10 −𝑥00 ∆ 𝑥10 −𝑥00 𝑦00 𝑥10 −𝑦10 𝑥00 𝑥10 −𝑥00 0 0 1 1 𝑦10 − 𝑦00 𝑥10 − 𝑥00 0 0 𝑦10 −𝑦00 𝑥 𝑥10 −𝑥00 00 0 0 1 0 ∆ ÷ 𝑥10 − 𝑥00 0 𝑦00 𝑥10 − 𝑦10 𝑥00 𝑥10 − 𝑥00 1 𝑥10 − 𝑥00 0 0 = 𝑦10 − 𝑦00 0 −1 1 𝑥00 − 𝑥 −𝑥 10 00 0 1 0 1 𝑥10 − 𝑥00 0 1 𝑥10 − 𝑥00 𝑥01 − 𝑥00 ∆ 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥01 ∆ − 𝑥10 − 𝑥 −𝑥 10 00 − 𝑥00 10 −𝑥00 0 𝑥 −𝑥 − 𝑥01−𝑥00 10 00 𝑥10 −𝑥01 𝑥10 −𝑥00 −𝑥 − 𝑥01−𝑥00 1 𝑥10 −𝑥00 1 𝑥10 −𝑥00 𝑥00 1 0 𝑦00 0 1 1 1 1 1 𝑥10 −𝑥00 1 𝑥10 −𝑥00 𝑥00 𝑥10 − 𝑥00 0 𝑥10 − 𝑥10 − 𝑥00 𝑥 𝑥01 − 𝑥00 𝑦01 − 𝑦00 0 10 𝑥 00 −𝑥 1 − 𝑥01−𝑥00 10 00 0 0 = −1 −𝑥 0 𝑥00 10 −𝑥00 −1 − 𝑥 = 整頓 ∆= 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 (𝑥01 − 𝑥10 ) + (𝑦10 − 𝑦01 )𝑥00
− 𝑦10 − 𝑦00 𝑥10 − 𝑥00 1 𝑦10 − 𝑦00 𝑥10 − 𝑥00 0 1 0 0 0 1 0 − 0 1 0 𝑦00 𝑥10 − 𝑦10 𝑥00 𝑥10 − 𝑥00 0 𝑦00 𝑥10 − 𝑦10 𝑥00 𝑥10 − 𝑥00 1 1 𝑥10 − 𝑥00 𝑥01 − 𝑥00 ∆ 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥01 ∆ − 0 1 𝑥10 − 𝑥00 𝑥 − 𝑥00 𝑦10 − 𝑦00 1 + 01 ∆ 𝑥10 − 𝑥00 0 𝑥10 − 𝑥00 𝑦 − 𝑦00 − 10 0 ∆ 1 𝑥 − 𝑥01 𝑦10 − 𝑦00 1 − 10 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥00 𝑥01 − 𝑥00 ∆ 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥01 ∆ − − 𝑥00 𝑥10 − 𝑥00 0 𝑥10 − 𝑥10 − 𝑥00 ∆= 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 (𝑥01 − 𝑥10 ) + (𝑦10 − 𝑦01 )𝑥00 𝑥00 𝑥 − 𝑥00 𝑦00 𝑥10 − 𝑦10 𝑥00 + 01 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥00 𝑦 𝑥 − 𝑦10 𝑥00 − 00 10 ∆ 𝑥10 𝑥 − 𝑥01 𝑦00 𝑥10 − 𝑦10 𝑥00 − − 10 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥00 − ∆ + 𝑥01 − 𝑥00 𝑦10 − 𝑦00 = 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑦10 − 𝑦01 𝑥00 + 𝑥01 − 𝑥00 𝑦10 − 𝑦00 = 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑦10 − 𝑦01 𝑥00 + 𝑥01 𝑦10 − 𝑥01 𝑦00 − 𝑥00 𝑦10 + 𝑥00 𝑦00 = (𝑥10 − 𝑥00 )(𝑦01 − 𝑦00 ) こ れ ら 結 果 を 代 入 −𝑥00 ∆ + 𝑥01 − 𝑥00 𝑦00 𝑥10 − 𝑦10 𝑥00 = −𝑥00 𝑦01 𝑥10 + 𝑥00 𝑦10 𝑥01 − 𝑥00 𝑦00 𝑥01 − 𝑥10 − 𝑥00 𝑦10 − 𝑦01 𝑥00 + 𝑥01 − 𝑥00 𝑦00 𝑥10 − 𝑦10 𝑥00 = −𝑥00 𝑦01 𝑥10 + 𝑥00 𝑦10 𝑥01 − 𝑥00 𝑦00 𝑥01 − 𝑥10 − 𝑥00 𝑦10 − 𝑦01 𝑥00 + 𝑥01 𝑦00 𝑥10 − 𝑥01 𝑦10 𝑥00 − 𝑥00 𝑦00 𝑥10 + 𝑥00 𝑦10 𝑥00 = 𝑥10 − 𝑥00 𝑥01 𝑦00 − (𝑥10 − 𝑥00 )𝑦01 𝑥00 = (𝑥10 − 𝑥00 )(𝑥01 𝑦00 − 𝑥00 𝑦01 ) ∆ − 𝑥10 − 𝑥01 𝑦10 − 𝑦00 = 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑦10 − 𝑦01 𝑥00 − 𝑥10 − 𝑥01 𝑦10 − 𝑦00 = 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑦10 − 𝑦01 𝑥00 − 𝑥10 𝑦10 + 𝑥10 𝑦00 + 𝑥01 𝑦10 − 𝑥01 𝑦00 = (𝑥10 − 𝑥00 )(𝑦01 − 𝑦10 ) −𝑥10 ∆ − 𝑥10 − 𝑥01 𝑦00 𝑥10 − 𝑦10 𝑥00 = −𝑥10 𝑦01 𝑥10 + 𝑥10 𝑦10 𝑥01 − 𝑥10 𝑦00 𝑥01 − 𝑥10 − 𝑥10 𝑦10 − 𝑦01 𝑥00 − 𝑥10 − 𝑥01 𝑦00 𝑥10 − 𝑦10 𝑥00 = −𝑥10 𝑦01 𝑥10 + 𝑥10 𝑦10 𝑥01 − 𝑥10 𝑦00 𝑥01 − 𝑥10 − 𝑥10 𝑦10 − 𝑦01 𝑥00 − 𝑥10 𝑦00 𝑥10 + 𝑥10 𝑦10 𝑥00 + 𝑥01 𝑦00 𝑥10 − 𝑥01 𝑦10 𝑥00 = 𝑥00 − 𝑥10 𝑥10 𝑦01 + (𝑥10 − 𝑥00 )𝑦10 𝑥01 = (𝑥10 − 𝑥00 )(𝑥01 𝑦10 − 𝑥10 𝑦01 ) 1 0 0 0 1 0 𝑦01 − 𝑦00 ∆ 0 𝑦10 − 𝑦00 0− ∆ 1 𝑦01 − 𝑦10 ∆ 𝑥 − 𝑥00 − 01 ∆ 𝑥10 − 𝑥00 ∆ 𝑥10 − 𝑥01 ∆ 𝑥01 𝑦00 − 𝑥00 𝑦01 ∆ 𝑦10 𝑥00 − 𝑦00 𝑥10 ∆ 𝑥01 𝑦10 − 𝑥10 𝑦01 ∆ = 1 0 0 0 1 0 𝑑𝑦01 ∆ 0 0 − 𝑑𝑦10 ∆ 1 𝑒𝑦 ∆ 𝑑𝑥01 ∆ 𝑑𝑥10 ∆ 𝑒 − 𝑥 ∆ − 𝑥01 𝑦00 − 𝑥00 𝑦01 ∆ 𝑦10 𝑥00 − 𝑦00 𝑥10 ∆ 𝑥01 𝑦10 − 𝑥10 𝑦01 ∆ ここで下記を導入した 𝑑𝑥𝑖𝑗 = 𝑥𝑖𝑗 − 𝑥00 𝑒𝑥 = 𝑥01 − 𝑥10 𝑑𝑦𝑖𝑗 = 𝑦𝑖𝑗 − 𝑦00 𝑒𝑦 = 𝑦01 − 𝑦10
W座標値の導出 𝑑𝑦01 ∆ 𝑑𝑦10 − ∆ 𝑒𝑦 ∆ 𝑤′10 𝑤′01 = 1 𝑑𝑥01 ∆ 𝑑𝑥10 ∆ 𝑒𝑥 − ∆ 𝑥01 𝑦00 − 𝑥00 𝑦01 ∆ 𝑦10 𝑥00 − 𝑦00 𝑥10 ∆ 𝑥01 𝑦10 − 𝑥10 𝑦01 ∆ 𝑥11 𝑦11 𝑤 ′11 1 𝑒𝑦 1= ∆ 𝑒𝑥 − ∆ 𝑥01 𝑦10 − 𝑥10 𝑦01 ∆ 𝑥11 𝑦11 𝑤 ′11 1 𝑦01 − 𝑦10 ∆ ∆ ∆ 但し、 = = 𝑥11 + 𝑥10 − 𝑥01 𝑦11 + 𝑥01 𝑦10 − 𝑥10 𝑦01 𝐷𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝐷𝑦01 Ξ − ∆= 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑦10 − 𝑦01 𝑥00 = 𝑦01 𝑥10 − 𝑦10 𝑥01 + 𝑦00 𝑥01 − 𝑥10 + 𝑥00 𝑦10 − 𝑦01 + 𝑦00 𝑥00 − 𝑦00 𝑥00 = 𝑦01 − 𝑦00 𝑥10 − 𝑥00 − 𝑦10 − 𝑦00 𝑥01 − 𝑥00 = 𝑑𝑦01 𝑑𝑥10 − 𝑑𝑦10 𝑑𝑥01 3行目を抽出する 𝑤′ 11 = = −𝑑𝑥01 𝑑𝑥10 𝑥01 𝑦00 − 𝑥00 𝑦01 𝑦10 𝑥00 − 𝑦00 𝑥10 1 +𝑑𝑦01 𝑥11 − 𝑑𝑥01 𝑦11 + 𝑥01 𝑦00 − 𝑥00 𝑦01 Ξ −𝑑𝑦10 𝑥11 + 𝑑𝑥10 𝑦11 + 𝑦10 𝑥00 − 𝑦00 𝑥10 𝐷𝑦𝑖𝑗 = 𝑦11 − 𝑦𝑖𝑗 Ξ = 𝐷𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝐷𝑦01 この結果を1,2行目に代入すると 𝑤 ′10 𝑑𝑦01 = −𝑑𝑦10 𝑤 ′ 01 𝐷𝑥𝑖𝑗 = 𝑥11 − 𝑥𝑖𝑗 𝑥11 𝑦11 1 1 = Ξ 1 Ξ +𝑑𝑦01 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦11 −𝑑𝑦10 𝑑𝑥11 + 𝑑𝑥10 𝑑𝑦11
g, h • 元の式 𝑎 𝑥10 𝑤′10 − 𝑥00 𝑦10 𝑤′10 − 𝑦00 = 𝑑 , 𝑔 𝑤′10 − 1 𝑥01 𝑤′01 − 𝑥00 𝑦01 𝑤′01 − 𝑦00 𝑤′01 − 1 𝑏 = 𝑒 , ℎ より、 𝑤 ′ を具体的な値として代入する 1 +𝑑𝑦01 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦11 𝑔 𝑤′10 − 1 = = −1 ℎ 𝑤′01 − 1 Ξ −𝑑𝑦10 𝑑𝑥11 + 𝑑𝑥10 𝑑𝑦11 +𝑑𝑦01 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦11 − 𝐷𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝐷𝑦01 = + −𝐷𝑦01 + 𝑑𝑦11 𝑑𝑥11 − −𝐷𝑥01 + 𝑑𝑥11 𝑑𝑦11 − 𝐷𝑥01 𝑑𝑦11 − 𝑑𝑦10 + 𝑑𝑥11 − 𝑑𝑥10 𝐷𝑦01 = +𝑑𝑦10 𝐷𝑥01 − 𝑑𝑥10 𝐷𝑦01 −𝑑𝑦10 𝑑𝑥11 + 𝑑𝑥10 𝑑𝑦11 − 𝐷𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝐷𝑦01 = − −𝐷𝑦10 + 𝑑𝑥11 𝑑𝑥11 + −𝐷𝑥10 + 𝑑𝑦11 𝑑𝑦11 − 𝑑𝑥11 − 𝑑𝑥01 𝐷𝑦10 + 𝐷𝑥10 𝑑𝑦11 − 𝑑𝑦01 = −𝑑𝑦01 𝐷𝑥10 + 𝑑𝑥01 𝐷𝑦10 1 +𝑑𝑦10 𝐷𝑥01 − 𝑑𝑥10 𝐷𝑦01 𝑔 = ℎ Ξ −𝑑𝑦01 𝐷𝑥10 + 𝑑𝑥01 𝐷𝑦10
a,b,c,d • 残りの係数も関係式から具体的に求めることができる 𝑥10 𝑤 ′10 − 𝑥00 𝑎 = , 𝑑 𝑦10 𝑤 ′10 − 𝑦00 𝑥01 𝑤 ′ 01 − 𝑥00 𝑏 = , 𝑦01 𝑤 ′ 01 − 𝑦00 𝑒 𝑥10 + 𝑦01 − 𝑦00 𝑥11 − 𝑥01 − 𝑥00 𝑦11 + 𝑥01 𝑦00 − 𝑥00 𝑦01 − 𝑥00 𝑥01 𝑦10 − 𝑥10 𝑦01 + 𝑦11 𝑥10 − 𝑥01 + 𝑦01 − 𝑦10 𝑥11 = 𝑥10 − 𝑥00 (𝑥11 𝑦01 − 𝑥01 𝑦11 ) + 𝑥11 − 𝑥01 (𝑥00 𝑦10 − 𝑥10 𝑦00 ) 𝑦10 + 𝑦01 − 𝑦00 𝑥11 − 𝑥01 − 𝑥00 𝑦11 + 𝑥01 𝑦00 − 𝑥00 𝑦01 − 𝑦00 𝑥01 𝑦10 − 𝑥10 𝑦01 + 𝑦11 𝑥10 − 𝑥01 + 𝑦01 − 𝑦10 𝑥11 = + 𝑦01 − 𝑦00 𝑦10 𝑥11 − 𝑥01 − 𝑥00 𝑦10 𝑦11 + 𝑥01 𝑦10 𝑦00 − 𝑥00 𝑦10 𝑦01 − 𝑥01 𝑦00 𝑦10 + 𝑥10 𝑦00 𝑦01 − 𝑦00 𝑦11 𝑥10 − 𝑥01 − 𝑦00 𝑦01 − 𝑦10 𝑥11 = 𝑦11 − 𝑦01 𝑥00 𝑦10 − 𝑦00 𝑥10 + (𝑦10 − 𝑦00 )(𝑦01 𝑥11 − 𝑦11 𝑥01 ) 𝑥01 − 𝑦10 − 𝑦00 𝑥11 + 𝑥10 − 𝑥00 𝑦11 + 𝑦10 𝑥00 − 𝑦00 𝑥10 − 𝑥00 𝑥01 𝑦10 − 𝑥10 𝑦01 + 𝑦11 𝑥10 − 𝑥01 + 𝑦01 − 𝑦10 𝑥11 = − 𝑦10 − 𝑦00 𝑥01 𝑥11 + 𝑥10 − 𝑥00 𝑥01 𝑦11 + 𝑦10 𝑥01 𝑥00 − 𝑦00 𝑥01 𝑥10 − 𝑥00 𝑥01 𝑦10 + 𝑥00 𝑥10 𝑦01 − 𝑦11 𝑥00 𝑥10 − 𝑥01 − 𝑦01 − 𝑦10 𝑥00 𝑥11 = 𝑥11 − 𝑥10 (𝑦00 𝑥01 − 𝑥00 𝑦01 ) + (𝑥01 − 𝑥00 )(𝑦11 𝑥10 − 𝑥11 𝑦10 ) 𝑦01 − 𝑦10 − 𝑦00 𝑥11 + 𝑥10 − 𝑥00 𝑦11 + 𝑦10 𝑥00 − 𝑦00 𝑥10 − 𝑦00 𝑥01 𝑦10 − 𝑥10 𝑦01 + 𝑦11 𝑥10 − 𝑥01 + 𝑦01 − 𝑦10 𝑥11 = 𝑦01 − 𝑦00 𝑦11 𝑥10 − 𝑦10 𝑥11 + 𝑦11 − 𝑦10 𝑦00 𝑥01 − 𝑦01 𝑥00 𝑑𝑥10 (𝑥11 𝑦01 − 𝑥01 𝑦11 ) + 𝐷𝑥01 (𝑥00 𝑦10 − 𝑥10 𝑦00 ) 𝑎 𝑑 1 𝐷𝑦01 𝑥00 𝑦10 − 𝑦00 𝑥10 + 𝑑𝑦10 (𝑦01 𝑥11 − 𝑦11 𝑥01 ) =Ξ , 𝑏 𝐷𝑥10 (𝑦00 𝑥01 − 𝑥00 𝑦01 ) + 𝑑𝑥01 (𝑦11 𝑥10 − 𝑥11 𝑦10 ) 𝑒 𝑑𝑦01 𝑦11 𝑥10 − 𝑦10 𝑥11 + 𝐷𝑦10 𝑦00 𝑥01 − 𝑦01 𝑥00
まとめ • 有理多項式の射影変換 𝑎𝑢 + 𝑏𝑣 + 𝑐 𝑥= 𝑔𝑢 + ℎ𝑣 + 1 𝑑𝑢 + 𝑒𝑣 + 𝑓 𝑦= 𝑔𝑢 + ℎ𝑣 + 1 において、単位正方形とその頂点の対応が 𝑥00, 𝑦00 , で与えられる場合、係数a,b,…,hは下記となる 𝑥10 , 𝑦10 , 𝑥01 , 𝑦01 , 𝑥11 , 𝑦11 𝑑𝑥10 (𝑥11 𝑦01 − 𝑥01 𝑦11 ) + 𝐷𝑥01 (𝑥00 𝑦10 − 𝑥10 𝑦00 ) 𝑎 𝑑 1 𝐷𝑦01 𝑥00 𝑦10 − 𝑦00 𝑥10 + 𝑑𝑦10 (𝑦01 𝑥11 − 𝑦11 𝑥01 ) =Ξ , 𝑏 𝐷𝑥10 (𝑦00 𝑥01 − 𝑥00 𝑦01 ) + 𝑑𝑥01 (𝑦11 𝑥10 − 𝑥11 𝑦10 ) 𝑒 𝑑𝑦01 𝑦11 𝑥10 − 𝑦10 𝑥11 + 𝐷𝑦10 𝑦00 𝑥01 − 𝑦01 𝑥00 𝑐 = 𝑥00 , 𝑓 = 𝑦00 , 1 +𝑑𝑦10 𝐷𝑥01 − 𝑑𝑥10 𝐷𝑦01 𝑔 = ℎ Ξ −𝑑𝑦01 𝐷𝑥10 + 𝑑𝑥01 𝐷𝑦10 但し、 𝑑𝑥𝑖𝑗 = 𝑥𝑖𝑗 − 𝑥00 𝐷𝑥𝑖𝑗 = 𝑥11 − 𝑥𝑖𝑗 𝑑𝑦𝑖𝑗 = 𝑦𝑖𝑗 − 𝑦00 𝐷𝑦𝑖𝑗 = 𝑦11 − 𝑦𝑖𝑗 Ξ = 𝐷𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝐷𝑦01
アジェンダ • 背景 • テクスチャ座標から位置座標 • 位置座標からテクスチャ座標
位置座標からテクスチャ座標 • ソフトウェアでレンダリングを行う際は、位置座標からテクス チャ座標を求めてサンプリングを行わなければならない。 • 個々では、先ほどと反対に、位置座標からのテクスチャ座標の 導出を行う • 射影変換の逆変換も射影変換になるので、同じパラメータの表 記を用いて、この後の計算を進める • なお、先ほどの変換行列の逆行列を 𝑦 直接求めても同じ結果が得られる (はずである…) 𝑢= 𝑎𝑥 + 𝑏𝑦 + 𝑐 𝑔𝑥 + ℎ𝑦 + 1 𝑣= 𝑑𝑥 + 𝑒𝑦 + 𝑓 𝑔𝑥 + ℎ𝑦 + 1 𝑥00 , 𝑦00 𝑣 𝑥01 , 𝑦01 𝑥11 , 𝑦11 1,1 𝑥10 , 𝑦10 𝑥 0,0 𝑢
頂点の変換 • 今回の射影変換を行列で表記すると、 次のように書ける 𝑎 𝑢𝑖 𝑣𝑖 = 𝑑 1 𝑔 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑥𝑖 𝑤𝑖 𝑦𝑖 𝑤𝑖 𝑤𝑖 𝑦 𝑥01 , 𝑦01 𝑥00 , 𝑦00 𝑥11 , 𝑦11 𝑥10 , 𝑦10 𝑥 • 四角形の4隅の頂点を変換する式は、 次のように書ける 𝑎 0 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑥00 𝑤00 𝑦00 𝑤00 𝑤00 𝑎 1 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑥10 𝑤10 𝑦10 𝑤10 𝑤10 𝑎 0 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑥01 𝑤01 𝑦01 𝑤01 𝑤01 𝑎 1 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑥11 𝑤11 𝑦11 𝑤11 𝑤11 𝑣 1,1 0,0 𝑢
原点を合わせる • 今後の計算を簡単にするために、 𝑥00 , 𝑦00 を原点において考える 𝑑𝑥𝑖𝑗 = 𝑥𝑖𝑗 − 𝑥00 𝑑𝑦𝑖𝑗 = 𝑦𝑖𝑗 − 𝑦00 • この相対座標に関する射影変換として再定式化を行うと、新た な射影変化は下記で書ける • 元の変換から導出した式ではないため、a~hは前頁の値と一致しない 𝑎 0 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 0 0 𝑤00 𝑎 0 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑑𝑥01 𝑤01 𝑑𝑦01 𝑤01 𝑤01 𝑎 1 0 = 𝑑 𝑔 1 𝑎 1 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑐 𝑓 1 𝑑𝑥10 𝑤10 𝑑𝑦10 𝑤10 𝑤10 𝑑𝑥11 𝑤11 𝑑𝑦11 𝑤11 𝑤11 (1)
c, f の導出 (1)式の(0,0)に関する変換の右辺を計算する 𝑎 0 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑐 𝑓 1 𝑤00 𝑐 0 0 = 𝑤00 𝑓 𝑤00 𝑤00 この式から、c, f, 𝑤00 が計算できる 𝑐=0 𝑓=0 𝑤00 = 1 (2) (2)式を(1)の他の式に代入すると、次の式が得られる 𝑎 1 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 0 0 1 𝑑𝑥10 𝑤10 𝑑𝑦10 𝑤10 𝑤10 𝑎 0 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 0 0 1 𝑑𝑥01 𝑤01 𝑑𝑦01 𝑤01 𝑤01 𝑎 1 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 0 0 1 𝑑𝑥11 𝑤11 𝑑𝑦11 𝑤11 𝑤11 (3)
W座標のベクトル化 • (3)式を行ごとにまとめる (3)式 𝑎 1 0 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 𝑑𝑥10 𝑤10 𝑑𝑦10 𝑤10 𝑤10 0 0 1 𝑎 0 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 0 0 1 𝑑𝑥01 𝑤01 𝑑𝑦01 𝑤01 𝑤01 𝑎 1 1 = 𝑑 𝑔 1 𝑏 𝑒 ℎ 0 0 1 𝑑𝑥11 𝑤11 𝑑𝑦11 𝑤11 𝑤11 行ごとにまとめる 𝑑𝑥10 𝑤10 1 0 = 𝑑𝑥01 𝑤01 𝑑𝑥11 𝑤11 1 𝑑𝑦10 𝑤10 𝑑𝑦01 𝑤01 𝑑𝑦11 𝑤11 𝑎 𝑏 𝑑𝑥10 𝑤10 0 1 = 𝑑𝑥01 𝑤01 𝑑𝑥11 𝑤11 1 𝑑𝑦10 𝑤10 𝑑𝑦01 𝑤01 𝑑𝑦11 𝑤11 𝑑 𝑒 𝑑𝑥10 𝑤10 1 1 = 𝑑𝑥01 𝑤01 𝑑𝑥11 𝑤11 1 𝑑𝑦10 𝑤10 𝑑𝑦01 𝑤01 𝑑𝑦11 𝑤11 𝑤10 𝑤01 𝑤11 𝑔 ℎ 1 W座標を左辺に移行する(各行のw座標値で両辺を割る) −1 𝑑𝑥10 𝑤10 = 𝑑𝑥01 0 −1 𝑑𝑥11 𝑤11 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 𝑎 𝑏 0 𝑑𝑥10 −1 𝑤01 = 𝑑𝑥01 −1 𝑑𝑥11 𝑤11 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 𝑑 𝑒 −1 𝑤10 𝑑𝑥10 −1 = 𝑑𝑥 𝑤01 01 −1 𝑑𝑥11 𝑤11 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 1 1 1 𝑔 ℎ 1 (4)
(4)式の左辺が0の行から、パラメータの関係式を導出する (4)式 −1 𝑑𝑥10 𝑤10 = 𝑑𝑥01 0 −1 𝑑𝑥11 𝑤11 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 0 𝑑𝑥10 −1 𝑤01 = 𝑑𝑥01 −1 𝑑𝑥11 𝑤11 𝑎 𝑏 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 𝑑 𝑒 2行目と1行目から、a,b とd,eの関係式を得る 𝑑𝑥10 𝑑𝑥01 𝑒 = − 𝑑 𝑏=− 𝑎 𝑑𝑦 10 𝑑𝑦01 (4)式の一つ目の第1行と二つ目の第2行に(5)式を代入すると、a, d とw座標の関係が得られる (5) −1 −1 𝑑𝑥10 −1 𝑑 = 𝑑𝑥01 − 𝑑𝑦01 𝑤01 𝑑𝑦10 𝑑𝑦10 𝑑𝑦10 −1 −1 =− 𝑤10 =− 𝑤01 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦10 ∆ 𝑑𝑥01 −1 𝑎 = 𝑑𝑥10 − 𝑑𝑦10 𝑤10 𝑑𝑦01 𝑑𝑦01 𝑑𝑦01 −1 −1 = 𝑤10 = 𝑤10 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦10 ∆ (6) ここで、表記を簡潔にするためにΔを導入した。 ∆= 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦10 (7) −1 (4)式の一つ目と二つ目の第3行目に(5)式を代入すると、 𝑤11 に関する2つの式が得られる 𝑑𝑥01 𝑑𝑥01 𝑑𝑦01 −1 −1 𝑤11 = 𝑑𝑥11 − 𝑑𝑦11 𝑎 = 𝑑𝑥11 − 𝑑𝑦11 𝑤10 𝑑𝑦01 𝑑𝑦01 ∆ 𝑑𝑥11 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 −1 = 𝑤10 ∆ 𝑑𝑥10 𝑑𝑥10 −𝑑𝑦10 −1 = 𝑑𝑥11 − 𝑑𝑦 𝑑 = 𝑑𝑥11 − 𝑑𝑦 𝑤01 𝑑𝑦10 11 𝑑𝑦10 11 ∆ 𝑑𝑥11 𝑑𝑦10 − 𝑑𝑥10 𝑑𝑦11 −1 (8) =− 𝑤01 ∆ −1 𝑤11
(1,1)に対応する座標からの相対座標表記 • (8)式を一部書き換える • (1,1)に対応する座標への相対ベクトルを導入する 𝐷𝑥𝑖𝑗 = 𝑥11 − 𝑥𝑖𝑗 𝐷𝑦𝑖𝑗 = 𝑦11 − 𝑦𝑖𝑗 (9) • 下記の関係式 𝑑𝑥11 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 = 𝑑𝑥11 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦01 + 𝑑𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 = 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥11 𝑑𝑦10 − 𝑑𝑥10 𝑑𝑦11 = 𝑑𝑥11 𝑑𝑦10 − 𝑑𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝑑𝑦11 = 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (10) • を用いて(8)式を書き換えると、次のように書き換えらえる 𝑑𝑥11 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 −1 𝑤10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 −1 = 𝑤10 ∆ −1 𝑤11 = 𝑑𝑥11 𝑑𝑦10 − 𝑑𝑥10 𝑑𝑦11 −1 𝑤01 ∆ 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 −1 =− 𝑤01 ∆ −1 𝑤11 =− (11)
g, h を導出する式の構築 • (4)式の定数項を移行してgとhに関する式を導出する −1 𝑤10 𝑑𝑥10 −1 = 𝑑𝑥 𝑤01 01 −1 𝑑𝑥11 𝑤11 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 1 1 1 −1 𝑤10 −1 𝑑𝑥10 −1 𝑤01 − 1 = 𝑑𝑥01 −1 𝑑𝑥11 𝑤11 −1 𝑔 ℎ 1 𝑑𝑦10 𝑑𝑦01 𝑑𝑦11 𝑔 ℎ (12) • (12)式を1,2行目と3行目に分ける −1 𝑤10 −1 𝑑𝑥10 = −1 𝑑𝑥01 𝑤01 −1 𝑑𝑦10 𝑑𝑦01 𝑔 ℎ (13) (14) −1 𝑤11 = 𝑑𝑥11 𝑔 + 𝑑𝑦11 ℎ + 1 • (13)式をgとhについて解くと、次の形に変形できる −1 1 −1 𝑔 𝑑𝑥10 𝑑𝑦10 −1 𝑤10 𝑑𝑦01 = = −1 ℎ 𝑑𝑥01 𝑑𝑦01 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦10 −𝑑𝑥01 𝑤01 −1 −1 1 𝑑𝑦01 −𝑑𝑦10 𝑤10 −1 = −1 ∆ −𝑑𝑥01 𝑑𝑥10 𝑤01 −1 −𝑑𝑦10 𝑑𝑥10 −1 𝑤10 −1 −1 𝑤01 −1 (15)
𝑤11 を導出する式 • (14)式に(15)式を代入する (14)式 −1 𝑤11 = 𝑑𝑥11 𝑔 + 𝑑𝑦11 ℎ + 1 = 𝑑𝑥11 (15)式を代入 = 𝑑𝑥11 𝑑𝑦11 1 𝑑𝑦01 ∆ −𝑑𝑥01 −𝑑𝑦10 𝑑𝑥10 𝑔 +1 ℎ −1 𝑤10 −1 +1 −1 𝑤01 −1 𝑑𝑦11 −1 1 𝑤10 −1 = 𝑑𝑥11 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 𝑑𝑥10 𝑑𝑦11 − 𝑑𝑥11 𝑑𝑦10 +1 −1 ∆ 𝑤01 −1 −1 (10)式を利用 1 𝑤10 −1 = 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥10 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 +1 −1 ∆ 𝑤01 −1 (16)
𝑤11 の導出 −1 −1 • (16)式に(11)式(を𝑤01 , 𝑤10 について解いた式)を代入する −1 𝑤11 = 1 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 ∆ 𝑑𝑥10 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 1 -1 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥10 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 = − 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 ∆ −1 −1 𝑤11 −1 −1 +1 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 −1 − 𝑤11 −1 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥10 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 −1 𝑤11 − − +1 ∆ ∆ • 上記式をまとめ直すと、次の結果が得らえる −1 𝑤11 = 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 − −1 ∆ ∆ (17)
分子の計算 • (17)式の分子を変形する 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 − ∆ = 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝐷𝑦10 − 𝑑𝑥10 𝑑𝑦01 + 𝑑𝑥01 𝑑𝑦10 = 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦11 − 𝑑𝑦01 − 𝐷𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝐷𝑦10 − 𝑑𝑥10 𝑑𝑦01 + 𝑑𝑥01 𝑑𝑦10 = 𝐷𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝐷𝑦10 = 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 (18) • ここで、対角頂点への差分ベクトルを導入した 𝑒𝑥 = 𝑥01 − 𝑥10 𝑒𝑦 = 𝑦01 − 𝑦10 (19) • (18)式を(17)式に代入すると、 𝑤11 の明示的な形が得られる −1 𝑤11 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 = ∆ (20)
𝑤10 、 𝑤01 の導出 −1 −1 • (11)式(を𝑤01 , 𝑤10 について解いた式)に(20)式を代入する −1 −1 𝑤10 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 = + ∆ −1 −1 𝑤01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 = − ∆ −1 𝑤11 = ∆ 1 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 ) 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 ∆ −1 𝑤11 = −∆ 1 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 ) 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 ∆ • 式を整理すると、次の解が得られる −1 𝑤10 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 =+ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 −1 𝑤01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 =− 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (21)
g, hの導出 • g,h を求めるために、愚痴の量を計算する 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦01 + 𝑑𝑥01 𝐷𝑦01 −1= 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 −𝐷𝑥10 𝑒𝑦 + 𝑒𝑥 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝐷𝑦10 −1 𝑤01 − 1 = − −1= 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 −1 𝑤10 −1=+ 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦01 + 𝑑𝑥01 𝐷𝑦01 = 𝑑𝑥11 − 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑦10 − 𝑑𝑥01 − 𝑑𝑥10 𝑑𝑦11 − 𝑑𝑦10 − 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦01 + 𝑑𝑥01 𝑑𝑦11 − 𝑑𝑦01 = 𝑑𝑥11 − 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥11 − 𝑑𝑥10 𝑑𝑦10 − 𝑑𝑥01 𝑑𝑦11 − 𝑑𝑦10 + 𝑑𝑥10 𝑑𝑦11 − 𝑑𝑦10 − 𝑑𝑥11 − 𝑑𝑥01 𝑑𝑦01 + 𝑑𝑥01 𝑑𝑦11 − 𝑑𝑦01 = −𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥11 𝑑𝑦10 + 𝑑𝑦10 𝑑𝑥01 + 𝑑𝑥10 𝑑𝑦11 = 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 −𝐷𝑥10 𝑒𝑦 + 𝑒𝑥 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 + 𝑑𝑥10 𝐷𝑦10 = −𝐷𝑥10 𝑑𝑦01 − 𝑑𝑦10 + 𝑑𝑦10 + 𝑑𝑥01 − 𝑑𝑥10 + 𝑑𝑥10 𝐷𝑦10 = −𝐷𝑥10 𝑑𝑦01 + 𝑑𝑥01 𝐷𝑦10 = 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 −1 𝑤10 −1= 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 −1 𝑤01 𝐷𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦10 −1= − 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (22)
g, hの導出 • (15)式に(22)式を代入する 1 𝑑𝑦01 𝑔 = ℎ ∆ −𝑑𝑥01 = 1 𝑑𝑦01 ∆ −𝑑𝑥01 −𝑑𝑦10 𝑑𝑥10 −𝑑𝑦10 𝑑𝑥10 −1 𝑤10 −1 −1 𝑤01 −1 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥10 𝑑𝑦10 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 + • 行列を適応する 𝑔= ℎ= 1 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥01 𝑑𝑦10 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦10 +𝑑𝑦01 − 𝑑𝑦10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝑑𝐷10 1 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥01 𝑑𝑦10 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦10 −𝑑𝑥01 + 𝑑𝑥10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (23)
a, b, d,e の導出 • (6)式に、(21)式を適応する 𝑎=+ 𝑑𝑦01 −1 𝑑𝑦01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝑤10 = ∆ ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑦10 −1 𝑑𝑦10 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝑑=− 𝑤01 = ∆ ∆ 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (24) • (5)式に、(24)式を代入する 𝑏=− 𝑑𝑥01 𝑑𝑥01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝑎=− 𝑑𝑦01 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥10 𝑑𝑥10 𝐷𝑥01 𝑒𝑦 − 𝑒𝑥 𝐷𝑦01 𝑒=− 𝑑=− 𝑑𝑦10 ∆ 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 (25)
まとめ • 有理多項式の射影変換 𝑢 𝑎 𝑣 = 𝑑 1 𝑔 𝑏 𝑒 ℎ 0 0 1 𝑎 𝑑𝑥 𝑤 𝑑𝑦 𝑤 = 𝑑 𝑔 𝑤 𝑏 𝑒 ℎ 0 0 1 𝑎 (𝑥 − 𝑥00 )𝑤 𝑦 − 𝑦00 𝑤 = 𝑑 𝑔 𝑤 𝑏 𝑒 ℎ −𝑎𝑥00 − 𝑏𝑦00 −𝑑𝑥00 − 𝑒𝑦00 1 − 𝑔𝑥00 − ℎ𝑦00 𝑥𝑤 𝑦𝑤 𝑤 において、単位正方形とその頂点の対応が 𝑥00 , 𝑦00 , 𝑥10 , 𝑦10 , 𝑥01 , 𝑦01 , 𝑥11 , 𝑦11 で与えられる場合、係数a,b,…,hと各頂点でのw座標は下記となる 𝑤 = 1 + 𝑔 𝑥 − 𝑥00 + ℎ(𝑦 − 𝑦00 ) 𝑎= 𝑑𝑦01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 −1 𝑏=− 𝑑𝑥01 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝑑𝑥10 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝑑𝑦10 𝐷𝑥10 𝑒𝑦 − 𝑒𝑥 𝐷𝑦10 𝑒=− ∆ 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 ∆ 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 1 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥01 𝑑𝑦10 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦10 1 𝑑𝑥10 𝐷𝑦01 − 𝐷𝑥01 𝑑𝑦10 𝑑𝑥01 𝐷𝑦10 − 𝐷𝑥01 𝑑𝑦10 ℎ= −𝑑𝑥01 + 𝑑𝑥10 𝑔= +𝑑𝑦01 − 𝑑𝑦10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 ∆ 𝐷𝑥01 𝑑𝑦01 − 𝑑𝑥01 𝐷𝑦01 𝐷𝑥10 𝑑𝑦10 − 𝑑𝑥10 𝐷𝑦10 𝑑𝑥 = 𝑥 − 𝑥 𝑒𝑥 = 𝑥01 − 𝑥10 𝐷𝑥𝑖𝑗 = 𝑥11 − 𝑥𝑖𝑗 但し、 𝑖𝑗 𝑖𝑗 00 ∆= 𝑑𝑥10 𝑑𝑦01 − 𝑑𝑥01 𝑑𝑦10 𝑑𝑦𝑖𝑗 = 𝑦𝑖𝑗 − 𝑦00 𝐷𝑦𝑖𝑗 = 𝑦11 − 𝑦𝑖𝑗 𝑒𝑦 = 𝑦01 − 𝑦10 𝑑=