我试图从其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 /加工
编辑
为了澄清我的答案。我定义了4个随机角点,我想获得所有创建perspective deformed grid的点。请注意,因为透视图dX1!= dX2以及dY1!= dY2。我写的代码不会产生这种效果(我知道这一点,但我不知道该如何去做)因为点是插值的,导致dX1 = dX2 = ... = dXi和dY1 = dY2 = ... = dYi
我已阅读有关视角变换,但我不需要变换图像,我只需要得到grid points coordinates。
我真的不知道是什么你问。你可以请发表[mcve]而不是断开连接的功能吗?你可以发表你想要做的模拟吗?哪一行代码的行为与您的预期不同? –
我试图解释我自己一点点更好,并添加了我想要实现的所需结果的绘图 – markusand