Outils pour utilisateurs

Outils du site


doc:images:3d

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
doc:images:3d [2019/03/12 17:36] – Création avec "Matrice de rotation pour mettre un point sur un axe" rootdoc:images:3d [2019/10/23 10:37] (Version actuelle) – mhtml -> html root
Ligne 1: Ligne 1:
-Ici, tout le code est présenté pour la "Point Cloud Librarymais c'est aussi applicable pour l'OpenGL.+Ici, tout le code est présenté pour la [[lib:pcl|Point Cloud Library]] mais c'est aussi applicable pour OpenGL.
  
-===Matrice de rotation pour mettre un point sur un axe===+===Matrice de rotation pour mettre un point sur l'axe X===
  
 Rappel : rotation autour de l'axe 0,0,0. Rappel : rotation autour de l'axe 0,0,0.
Ligne 13: Ligne 13:
 Puis autour de l'axe Y mais la coordonnée en X a changée. Puis autour de l'axe Y mais la coordonnée en X a changée.
 <code cpp> <code cpp>
-Eigen::AngleAxisf(-atan2f(cosf(alpha)*x+sinf(alpha)*y, z), Eigen::Vector3f::UnitY())+Eigen::AngleAxisf(atan2f(z, cosf(alpha)*x+sinf(alpha)*y), Eigen::Vector3f::UnitY())
 </code> </code>
 +
 +Seconde solution : utiliser directement les quaternions.
 +
 +<code cpp>
 +Eigen::Affine3f transform = Eigen::Affine3f::Identity();
 +Eigen::Quaternionf rotAxe;
 +rotAxe.setFromTwoVectors(Eigen::Vector3f(rx, ry, rz), Eigen::Vector3f(1, 0, 0));
 +transform.prerotate(rotAxe);
 +</code>
 +===Matrice de rotation sur la base d'un vecteur unitaire===
 +$$R =
 +\pmatrix{
 +—\mathbf u_1—\\
 +—\mathbf u_2—\\
 +—\mathbf u_3—} =
 +\pmatrix{
 +{n_y\over\sqrt{n_x^2+n_y^2}}    & {-n_x\over\sqrt{n_x^2+n_y^2}}   & 0 \\
 +{n_xn_z\over\sqrt{n_x^2+n_y^2}} & {n_yn_z\over\sqrt{n_x^2+n_y^2}} & -\sqrt{n_x^2+n_y^2} \\
 +n_x                             & n_y                             & n_z}$$
 +
 +[[https://math.stackexchange.com/questions/1956699/getting-a-transformation-matrix-from-a-normal-vector|Getting a transformation matrix from a normal vector]] {{ :doc:images:3d:matrices_-_getting_a_transformation_matrix_from_a_normal_vector_-_mathematics_stack_exchange_2019-10-23_10_36_29_.html |Archive le 06/10/2016 le 23/10/2019}}
 +
 +===Fusion de plusieurs matrices de rotation / translation===
 +Si on souhaite regrouper plusieurs matrices de rotation et de translation dans une seule, il faut : $R = R_3 * R_2 * R_1 $
 +
 +
doc/images/3d.1552408615.txt.gz · Dernière modification : 2019/03/12 17:36 de root