2013-07-02 1 views
0

Je voudrais générer une texture 2D en générant d'abord des coefficients de domaine fréquentiel 2D puis en utilisant ifft pour générer la texture. Pour calculer la carte normale, je voudrais prendre une dérivée de cette fonction 2D. Je veux juste savoir si ce qui suit est correct:Calcul de la dérivée d'une fonction avec ifft

in 1D I would just do a loop for (k = 0; k < N, k++) coefficients[k] *= i * k; where i is sqrt(-1) 
in 2D I should do this? for (m=0;m<N;m++) for (n=0;n<N;n++) coefficients[m,n] *= (i*m)*(i*n) -> -m*n; 

Répondre

0

Pour 2D, le « dérivé » est le vecteur de gradient 2D dont les composants sont, dans le domaine spatial, les dérivées partielles w.r.t. coordianer les axes (habituellement notés x et y). Donc, vous allez faire coefficients[m,n] *= i*m pour un axe, et coefficients[m,n] *= i*n pour l'autre axe. Vous allez appliquer l'inverse 2D fft à chacun de ces deux, pour obtenir des images de dérivé partiel d/dx et dérivé partiel d/dy. La normale sera alors le vecteur (d/dx, d/dy, -1) normalisé à la longueur 1.

+0

Donc vous dites que je devrais créer 2 ensembles de coefficients et exécuter 2 ifft 1D séparés sur eux? – jz87

+0

Pas vraiment. Pour chacun d'eux, vous appliquerez 2d ifft. Cette info a été ajoutée pour répondre. – ondrejdee

+0

voulez-vous dire coefficients [m, n] * = i * n? – jz87

Questions connexes