我一直在嘗試使用C++的齊次轉換,但我不能讓矩陣乘法工作。我在代碼中做錯了什麼?不能有矩陣乘法工作正常
我檢查做手工和它似乎是錯誤的。我錯過了什麼?
#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;
}
請花一些時間閱讀[如何調試小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –
您期望得到什麼結果,爲什麼,以及得到了什麼結果,如果您認爲矩陣乘法是問題,那麼爲什麼不將它隔離到一個不進行矩陣乘法的函數中? – Beta
你的矩陣乘法工作正常......但你不能從函數返回cpp中的3個值。 – Chandini