アプリ版:「スタンプのみでお礼する」機能のリリースについて

縦長の長方形があり、これを均等に6分割して、
正方形が6つ並んでいるようにプログラムで描画したいと考えています。
(図では正方形に見えませんが・・)

問題は遠近法を用いて、6分割したいというところです。
等比数列や黄金比などを使って算出すると思いますが、
具体的な算出ロジックが分かりません。

分かっている情報としては、
・各正方形の辺の長さ(遠近法を適用していない状態の)
・縦長長方形の辺の長さ・四点の座標

以上、よろしくお願いします。

「遠近法で描画した長方形を分割した場合の座」の質問画像

A 回答 (4件)

もともとの「均等に分割した正方形」の頂点の座標を出せばいいんじゃないの?

    • good
    • 0

遠近法で描画するなら、透視投影すればよいです。



> 分かっている情報としては、
> ・各正方形の辺の長さ(遠近法を適用していない状態の)
> ・縦長長方形の辺の長さ・四点の座標

上の情報から、各正方形のそれぞれの四点も算出できますね。それらを三次元空間に配置するようモデリングし(例えば適当な一定の高さに正方形を並べる)、各点を二次元座標に透視投影変換して直線で結べばよいです。

ある点の3次元座標 (x,y,z) を同次座標で表現し、透視投影変換の3✕4行列を H としたとき

|u|  |x|
|v|=H|y|
|w|  |z|
     |1|

を計算して求まる、(u/w, v/w, 1) が画像上に投影された点の2次元座標の同次座標表現になります。

では3✕4行列 H はどう求めればよいかという話になりますが、質問サイトで回答するレベルを超えるので「透視投影」「ピンホールカメラモデル」「外部/内部パラメータ」などで検索して、自分で調べてください。
    • good
    • 0

紙に正方形を6個並べて長方形にした絵を描いてテーブルに置きます。


紙は動かさずにあなたがテーブルの周りを動きます。上からのぞいたりテーブルの高さに近い高さから見たりします。すると描いた長方形の形は色々と見え方が変わるはずです。
ということは、必要な情報は
「長方形の位置とサイズ」だけではなく、
「あなたの目の位置」、「目線の向き」といったようなことが決まらないと描けないということになります。
等比数列や黄金比などは使いません。三角関数を多用します。ここで簡単に説明できるような内容ではありません。コンピュータ・グラフィックス関係の教科書で勉強してください。
    • good
    • 0

>縦長長方形の辺の長さ・四点の座標



これは、遠近法を適用した投影図上の座標ですよね。


縦長長方形の左辺の7個の点のx座標をx1,x2,x3,・・・,x7とする(x1とx7は既知)。
左辺と右辺の延長線の交点のx座標をx0とする。

x2-x1,x3-x2,x4-x3,・・・,x7-x6は等比数列になっているから、その公比をrとすれば、
合計は、
x7-x1=(x2-x1)(1-r^6)/(1-r)

もし、正方形が6個だけでなく無限に続いているとしたら、それはx0に限りなく近づいていくから、
x0-x1=(x2-x1)/(1-r)

この2つの式からr,x2が分かるので、x3,x4,x5,x6も計算可能。

y座標も同様です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!