Ich versuche, ein Raster von Punkten aus seinen 4 Ecken zu generieren. Da diese Ecken frei platziert werden können, sieht das Gitter wie eine Perspektive aus.Erstellen Sie ein Gitter in Perspektive aus 4 Ecken
I den folgenden Code in Verarbeitung geschrieben haben, wo Ecken im Uhrzeigersinn sind (beginnend am oberen linken)
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;
}
dies ein Gitter mit interpolierten Punkte erzeugt, aber es entspricht nicht ein perspektivisches Gitter. Alle Inline-Punkte sind äquidistant, während in der Perspektive am nächsten liegende Punkte mehr getrennt als am weitesten entfernt sein sollten.
würde ich eine gewisse Orientierung, wenn möglich, zu schätzen wissen, in Java/Verarbeitung
EDIT
meine Antwort zu klären. Ich definiere 4 zufällige Eckpunkte, ich möchte alle Punkte erhalten, die eine perspective deformed grid erstellen. Beachten Sie, dass wegen der Perspektive dX1! = DX2 sowie dY1! = DY2. Der Code, den ich geschrieben habe, hat diesen Effekt nicht (ich weiß das, aber ich weiß nicht, wie ich das machen soll), da Punkte interpoliert werden, was zu dX1 = dX2 = ... = dXi und dY1 = dY2 = ... = dYi führt
Ich habe gelesen über Perspektive transformieren, aber ich brauche kein Bild zu transformieren, ich brauche nur die grid points coordinates.
Ich bin nicht wirklich sicher, was du fragst. Kannst du bitte eine [mcve] anstelle einer getrennten Funktion posten? Kannst du bitte eine Kopie von dem, was du versuchst, veröffentlichen? Welche Codezeile verhält sich anders als erwartet? –
Ich habe versucht, mich ein bisschen besser zu erklären und fügte eine Zeichnung des gewünschten Ergebnisses hinzu, das ich erreichen möchte – markusand