私は4つのコーナーからポイントのグリッドを生成しようとしています。このコーナーは自由に置くことができるので、グリッドが視点を持つように見えます。私は(左上から始まる)角が時計回りの順序である処理において、次のコードを書いた4つのコーナーからパースペクティブでグリッドを作成する
PVector[][] setGrid(PVector[] corners, int cols, int rows) {
PVector[][] grid = new PVector[rows][cols];
for(int y = 0; y < rows; y++) {
float fY = (float)y/(rows - 1);
PVector p1 = PVector.lerp(corners[0], corners[3], fY);
PVector p2 = PVector.lerp(corners[1], corners[2], fY);
for(int x = 0; x < cols; x++) {
grid[y][x] = PVector.lerp(p1, p2, (float)x/(cols-1));
}
}
return grid;
}
これは補間点とグリッドを生成し、それはに対応していませんパースペクティブグリッド。すべてのインラインポイントは等距離ですが、最も近いポイントは最も遠く離れている必要があります。
可能であれば私は、Java /処理で、私の答えを明確にする
EDIT
をいくつかの方向性をいただければ幸いです。私は4つのランダムなコーナーポイントを定義し、perspective deformed gridを作成するすべてのポイントを取得したい。 dX1!= dX2の観点から、dY1!= dY2のために注意してください。私が書いたコードは、結果がdX1 = dX2 = ... = dXi、dY1 = dY2 = ... = dYiのように補間されるので、この効果はありません(私はこれを知っていますが、私が必要とすることをする方法を知らない)
私は透視変換について読んだことがありますが、画像を変換する必要はありません。ちょうどgrid points coordinatesを取得する必要があります。
私は本当にわからないんだけど何あなたは尋ねている。切断された関数の代わりに[mcve]を投稿できますか?あなたは何をしようとしているのか模擬してください。どのコード行が期待どおりに動作していませんか? –
私は自分自身を少し説明してみました。希望する結果の図を追加しました – markusand