Sannehello..!? some boys from denmark..?
sannei am ready to everything.. :D
Amastadblabla ist der ursprung und das ende, das omega und das alpha. sollten wir es nicht verehren??? sollten wir ihm kirchen bauen und kerzen um altare stellen??? ist es die lösung unserer probleme??? was sagt ihr dazu?
Amastadoh, ich hab vergessen hallo zu sagen... "hallo :)"
BenesTu hast es vergessen ? Mocht nix ! Chargezzzzzzzzzzz ! Messieurs, le destin nous attends aujourd'hui.
frontenwott?
Check the previous messages

Message

Pseudo

Professional Hosting Demoscene Hosting  
 
 
L'interpolation Bi Linéaire,

Une ptite explication des formules pour la bi-interpolation lineaire...
t'as donc 4 valeurs (v1,v2,v3,v4) que tu veux interpoler dans un carré de 8*8
	v1--------v2
	|          |
	|          |
	|   +      |
	|  v(x,y)  |
	|          |
	|          |
	v3--------v4
la formule classique pour la biinterpolation est:
v(x,y)=(1-x)(1-y)*v1+x(1-y)*v2+(1-x)y*v3+xy*v4, avec 0<=x<1 et 0<=y<1

d'ou en l'appliquant aux entiers sur du 8*8:
v(x,y)=[(8-x)(8-y)*v1+x(8-y)*v2+(8-x)y*v3+xy*v4]/64 , avec 0<=x<8 et 0<=y<8

And Now, les gradiants...
Les gradiants sont des dérivées mais partielles... donc des dérivées partielles...
C'est le meme mecanisme que pour les dérivées par rapport à x (f '(x)=df(x)/dx) sauf qu'elles s'appliquent à toutes les variables (x,y,z,...)

Je vais donc définir plusieurs gradiants (2 d'abord): dv(x,y)/dx et dv(x,y)/dy ...
pour calculer la premiere, je dis dans ma tete que c'est x qui varie, par contre y est constant... et y'a qu'à dériver comme d'hab
pour calculer la deuxieme, je dis dans ma tete que c'est y qui varie, par contre x est constant... et y'a qu'à dériver comme d'hab... okay ?

d'ou:
dv(x,y)/dx=[-(8-y)*v1+(8-y)*v2-y*v3+y*v4]/64
et
dv(x,y)/dy=[-(8-x)*v1-x*v2+(8-x)*v3+x*v4]/64

Ce qui est important de remarquer ici c'est que dv/dx n'est pas constant, il dépend de y, ce qui signifie qu'il faut le faire varier quand y varie (à chaque début de ligne donc)

d'ou le petit calcul de la variation de d[dv(x,y)/dx]/dy
(soit en plus matheux: d²v(x,y)/dxdy...)

d²v(x,y)/dxdy=[v1-v2-v3+v4]/64

Voila maintenant le remplissage de la mappe:

qq variables plus explicatives:

dleftv=dv(x=0,y)/dy=(-v1+v3)/8
dvdxdy=d²v/dxdy

algo:

   v=v1
   leftv=v1
   dvdx=dv(x,y=0)=(-u1+u2)/8

   pour y de 0 à 7

      v=leftv

      pour x de 0 à 7

         ici on a la valeur de v en (x,y)

         v=v+dvdx
      next x

      leftv=leftv+dleftv
      dvdx=dvdx+dvdxdy !!!! très important ceci ;)
   next y


C'est bien beau tout ça, mais à quoi ça sert-il donc ?

  une réponse simple: bah pour faire des effets bi-linéairement interpolés bien sûr !
- les effets 2d où les calculs sont très lourds, ça réduit de 64 leur nombre (pour du bi-linéaire 8*8)
- le RayCasting est un exemple d'effet 2d (oui bon faut un peu le trafficoter) pour lequel ça marche bien (cf les tunnels qui bougent et tournent dans tous les sens, les plans, et même les rendu temps réel de boules+ombre+lumière (avec un gros flou par dessus pour gommer les ptits bugs))
- tiens on lit le mot bi-lineaire depuis tout à l'heure... bah pour le bilinear mapping ça marche aussi (les valeurs à interpoler sont les nuances de Rouge, Vert, Bleu)
- et avec un peu d'imagination plein d'autres trucs (les light maps, les shadow maps, pour eviter l'effet de marche d'escalier dû au zoom), etc etc

vala, j'y vais, peut être d'autres zarticles un de ces 4 ...

à plous !

Cyg / BLaBLa.

Le Sub Pixel/Texel
Marre de la 3D qui tremble ? Marre des sauts violents dans les Lignes / Polygones ???
bah... le Sub corrige tout ça !!!


 
 
BlaBla rulez =)