2015-10-09 2 views
1

J'écris un programme de tracé de rayon qui croise une sphère avec une source de lumière locale. J'ai que des vecteursTransformez les vecteurs de l'espace du monde en espace local

  • wo (w - sortant)
  • wi (w - entrant)
  • n (surface normale)

enter image description here

Comment puis-je transférer que les vecteurs du système de coordonnées mondial au système de coordonnées local. Je recherche un algorithme C++, la transformation de ces vecteurs se trouve dans la même hémisphère. Je vous remercie.

Note: Par exemple vecteur normal coordonnées dans ce système de coordonnées locales sont: = vecteur n2 (x = 0, y = 1, z = 0)

Edit: Je cherche "Adj1" , "wi1" et "n2" valeurs de coordonnées xyz locales.

Répondre

1

Vous projetez vos vecteurs situés dans le système de coordonnées du monde sur les vecteurs qui constituent la base de votre système de coordonnées local. Par exemple, si la base de votre système de coordonnées local est un triplet de vecteurs (par exemple Lx, Ly, Lz) qui couvre votre espace vectoriel local. wo coordonnées dans le système local seront:

wo_local_x = wo . Lx; 
wo_local_y = wo . Ly; 
wo_local_z = wo . Lz; 

. désigne le produit scalaire.