J'ai essayé d'utiliser des transformations homogènes sur C++ mais je ne peux pas faire fonctionner la multiplication matricielle. Est-ce que je fais quelque chose de mal dans le code? J'ai vérifié le faire à la main et il ne semble pas avoir tort. Ai-je manqué quelque chose?La multiplication de matrices peut fonctionner correctement
#include "stdafx.h"
using namespace std;
float point[3][1];
float point_trans[3][1] = {0,0,0};
float rot[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
float d[3][1] = {0,0,0};
float x,y,z;
float transform (float x1, float y1, float z1)
{
point[0][0] = x1;
point[1][0] = y1;
point[2][0] = z1;
for(int i=0; i<3; ++i)
{
for(int j=0; j<1; ++j)
{
for(int k=0; k<3; ++k)
{
point_trans[i][j]+=rot[i][k]*point[k][j];
}
}
}
x1 = point_trans[0][0] + d[0][0];
y1 = point_trans[1][0] + d[1][0];
z1 = point_trans[2][0] + d[2][0];
return(x1,y1,z1);
}
int main()
{
x = 6; y = 7; z = 8;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout << rot[i][j] << " ";
}
cout << endl;
}
(x,y,z) = transform(x,y,z);
cout << "X:" << x << " " << "Y:"<<y<<" "<<"Z:"<<z<<endl;
system("pause");
return 0;
}
Veuillez prendre le temps de lire sur [comment déboguer de petits programmes] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
Quel résultat attendez-vous, et pourquoi, et quel résultat obtenez-vous, et si vous pensez que la multiplication matricielle est le problème, pourquoi ne pas l'isoler dans une fonction qui fait la multiplication matricielle et rien d'autre? – Beta
Votre multiplication matricielle fonctionne bien ... mais vous ne pouvez pas renvoyer 3 valeurs dans cpp à partir d'une fonction. – Chandini