{"rsdb":{"rid":"156028","subhead":"","postdate":"0","aid":"117132","fid":"49","uid":"1","topic":"1","content":"
\u7528C++<\/a>\u5b9e\u73b0\u77e9\u9635\u8fd0\u7b97\uff1a<\/strong>\u6700\u8fd1\u5b66\u4e60\u8fc7\u7a0b\u4e2d\u7528\u5230\u77e9\u9635\uff0c\u8fd9\u91cc\u6c47\u603b\u4e00\u4e0b\u7528\u5230\u7684\u77e9\u9635\u7684\u5404\u79cd\u8fd0\u7b97\u3002\u5305\u62ec\uff1a\u6c42\u8f6c\u7f6e\u77e9\u9635\uff084*4\uff09\uff1b\u6c42\u77e9\u9635\u7684\u4e58\u79ef\uff084*4_4*4\uff09\u6c42\u9006\u77e9\u9635\uff083*3\uff09\u3002<\/p> \n \u6211\u4eec\u7a0b\u5e8f\u4e2dA\u3001B\u90fd\u662f4*4\u7684\u77e9\u9635\u3002<\/p> \n C++<\/a>\u4ee3\u7801\u5982\u4e0b\uff1a<\/strong><\/p> \n \u8f93\u51fa\u7ed3\u679c\u5982\u4e0b\uff1a<\/strong><\/p> \n \n <\/p> \n <\/p> \n \u6211\u4eec\u7a0b\u5e8f\u4e2d\u7528\u5230\u76844*4\u7684\u77e9\u9635\u7684\u8f6c\u7f6e\u3002<\/p> \n C++\u4ee3\u7801\u5982\u4e0b\uff1a<\/strong><\/p> \n \u8f93\u51fa\u7ed3\u679c\u5982\u4e0b\uff1a<\/strong><\/p> \n \n \u6c42\u9006\u77e9\u9635\u53ef\u4ee5\u7528\u4f34\u968f\u77e9\u9635\uff0c\u4e5f\u53ef\u4ee5\u7528\u521d\u7b49\u53d8\u6362\u3002\u6211\u4eec\u8fd9\u91cc\u662f\u7528\u4f34\u968f\u77e9\u9635\u7684\u65b9\u6cd5\u6765\u6c42\u9006\u77e9\u9635\u3002<\/p> \n \u4ee3\u6570\u4f59\u5b50\u5f0f\uff1a<\/strong><\/p> \n \n \u4f34\u968f\u77e9\u9635\uff1a<\/strong><\/p> \n \n \u884c\u5217\u5f0f\u7684\u8ba1\u7b97\uff1a<\/strong><\/p> \n \uff08\u56e0\u4e3a\u6211\u4eec\u8fd9\u91cc\u7528\u5230\u7684\u662f3*3\u7684\u77e9\u9635\uff0c\u6240\u4ee5\uff0c\u8fd9\u91cc\u53ea\u8003\u86513\u9636\u884c\u5217\u5f0f\uff09<\/p> \n \n \u6c42\u9006\u77e9\u9635\uff1a<\/strong><\/p> \n \n <\/p> \n <\/p> \n C++\u4ee3\u7801\u5982\u4e0b\uff1a<\/strong><\/p> \n \u8f93\u51fa\u7ed3\u679c\u5982\u4e0b\uff1a<\/strong><\/p> \n \n 52.1\u6c42\u77e9\u9635\u7684\u4e58\u79ef\uff084*4_4*4\uff09<\/h3> \n
\r\nbool matrix_4_4_multiply_4_4(const float matrix1[4][4], const float matrix2[4][4], float (&result)[4][4]) {\r\n\/\/\u6c42\u4e24\u4e2a4*4\u77e9\u9635\u7684\u4e58\u79ef\r\n for (int k=0; k<4; k++) {\r\n for (int i=0; i<4; i++) {\r\n result[i][k] = 0.0;\r\n for (int j=0; j<4; j++) {\r\n result[i][k] = result[i][k] + matrix1[i][j]*matrix2[j][k];\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n int main(){\r\n float matrix1[4][4] = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}, {4, 5, 6, 7}};\r\n float matrix2[4][4] = {{2, 3, 4, 5}, {3, 4, 5, 6}, {4, 5, 6, 7}, {5, 6, 7, 8}};\r\n float result[4][4];\r\n matrix_4_4_multiply_4_4(matrix1, matrix2, result);\r\n std::cout << \"matrix1:\" << endl;\r\n for (int i=0; i<4; i++) {\/\/\u6253\u5370matrix1\r\n for (int j=0; j<4; j++) {\r\n std::cout << matrix1[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n std::cout << endl;\r\n std::cout << \"matrix2:\" << endl;\r\n for (int i=0; i<4; i++) {\/\/\u6253\u5370matrix2\r\n for (int j=0; j<4; j++) {\r\n std::cout << matrix2[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n std::cout << endl;\r\n std::cout << \"matrix1 multiply matrix2:\" << endl;\r\n for (int i=0; i<4; i++) {\/\/\u6253\u5370matrix1\u548cmatrix2\u7684\u4e58\u79ef\r\n for (int j=0; j<4; j++) {\r\n std::cout << result[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n }\r\n<\/pre> \n
\n 52.2\u6c42\u8f6c\u7f6e\u77e9\u9635\uff084*4\uff09<\/h3> \n
\n \r\nbool get_matrix_transpose_4_4(const float matrix[4][4], float (&result)[4][4]) {\r\n for (int i=0; i<4; i++) {\r\n for (int j=0; j<4; j++) {\r\n result[j][i] = matrix[i][j];\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nint main(){\r\n float matrix3[4][4] = {{1, 2, 3, 4}, {3, 4, 5, 6}, {5, 6, 7, 8}, {7, 8, 9, 0}};\r\n float transpose[4][4];\r\n get_matrix_transpose_4_4(matrix3, transpose);\r\n\r\n std::cout << \"matrix3:\" << endl;\r\n for (int i=0; i<4; i++) {\r\n for (int j=0; j<4; j++) {\r\n std::cout << matrix3[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n std::cout << endl;\r\n std::cout << \"transpose:\" << endl;\r\n for (int i=0; i<4; i++) {\r\n for (int j=0; j<4; j++) {\r\n std::cout << transpose[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n }\r\n<\/pre> \n
52.3 \u6c42\u9006\u77e9\u9635\uff083*3\uff09<\/h3> \n
\r\nbool get_matrix_inverse_3_3(const float m[3][3], float (&inverse)[3][3]) {\r\n float det_m = m[0][0]*m[1][1]*m[2][2] + m[0][1]*m[1][2]*m[2][0] + m[0][2]*m[1][0]*m[2][1] -\r\n m[0][2]*m[1][1]*m[2][0] - m[0][0]*m[1][2]*m[2][1] - m[0][1]*m[1][0]*m[2][2];\r\n if (fabs(det_m) < 1e-6) {\r\n return false;\r\n }\r\n else {\r\n vec3 a = (1\/det_m)*vec3(m[1][1]*m[2][2] - m[1][2]*m[2][1],\r\n m[1][2]*m[2][0] - m[1][0]*m[2][2],\r\n m[1][0]*m[2][1] - m[1][1]*m[2][0]);\r\n vec3 b = (1\/det_m)*vec3(m[0][2]*m[2][1] - m[0][1]*m[2][2],\r\n m[0][0]*m[2][2] - m[0][2]*m[2][0],\r\n m[0][1]*m[2][0] - m[0][0]*m[2][1]);\r\n vec3 c = (1\/det_m)*vec3(m[0][1]*m[1][2] - m[0][2]*m[1][1],\r\n m[0][2]*m[1][0] - m[0][0]*m[1][2],\r\n m[0][0]*m[1][1] - m[0][1]*m[1][0]);\r\n get_matrix_3_3(a, b, c, inverse);\r\n return true;\r\n }\r\n}\r\n\r\nint main(){\r\n float matrix4[3][3] = {{1, 0, 1}, {2, 1, 0}, {-3, 2, -5}};\r\n float inverse[3][3];\r\n get_matrix_inverse_3_3(matrix4, inverse);\r\n std::cout << \"matrix4:\" << endl;\r\n for (int i=0; i<3; i++) {\r\n for (int j=0; j<3; j++) {\r\n std::cout << matrix4[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n std::cout << endl;\r\n std::cout << \"inverse:\" << endl;\r\n for (int i=0; i<3; i++) {\r\n for (int j=0; j<3; j++) {\r\n std::cout << inverse[i][j] << \" \";\r\n }\r\n std::cout << endl;\r\n }\r\n}\r\n<\/pre> \n
\n
\n <\/div>\n <\/div>\n <\/div>\n<\/dd>","orderid":"0","title":"\u7528C++\u5b9e\u73b0\u77e9\u9635\u8fd0\u7b97","smalltitle":"","mid":"0","fname":"c++\u7f16\u7a0b\u57fa\u7840","special_id":"0","bak_id":"0","info":"0","hits":"534","pages":"1","comments":"0","posttime":"2017-01-18 08:15:03","list":"1484698503","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"\u5b9e\u73b0<\/A> \u77e9\u9635<\/A> \u8fd0\u7b97<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"14.17.22.31","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"\u7528C++\u5b9e\u73b0\u77e9\u9635\u8fd0\u7b97","lastview":"1714078872","digg_num":"6320","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}