bkaradzic / bx

Base library used across multiple projects
BSD 2-Clause "Simplified" License
564 stars 432 forks source link

float4x4_mul calculate error #37

Closed CodeEx222 closed 9 years ago

CodeEx222 commented 9 years ago

{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,35, 0, 0, 0, 1};

{ 0.974278, 0, 0, 0, 0, 1.732050, 0, 0, 0, 0, 1.000101, -0.100100, 0, 0, 1, 0};

float4x4_mul result: 0.974278 , 0 , 0 , 0 0 , 1.73205 , 0 , 0 0 , 0 , 36.0001 , 1 0 , 0 , -0.1001 , 0

OpenGL Mathematics (GLM) result: 0.974278 , 0 , 0 , 0 0 , 1.73205 , 0 , 0 0 , 0 , 1.0001 , 1 0 , 0 , 34.9034 , 35

CodeEx222 commented 9 years ago

include < iostream>

include < fstream>

include < random>

include < list>

include < unordered_map>

include < regex>

include "flextGL.h"

include "optional.hpp"

using namespace std;

include < iostream>

include < sstream>

define GLM_FORCE_RADIANS

define GLM_FORCE_CXX11

define GLM_FORCE_PURE

include "glm/glm/fwd.hpp"

include "glm/glm/glm.hpp"

include "glm/glm/ext.hpp"

include "bx/float4x4_t.h"

int main() {

float m1[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,35, 0, 0, 0, 1};

float m2[16] = { 0.974278, 0, 0, 0, 0, 1.732050, 0, 0, 0, 0, 1.000101, -0.100100, 0, 0, 1, 0};

bx::float4x4_t bx_m1; bx::float4x4_t bx_m2; glm::mat4 glm_m1; glm::mat4 glm_m2; memcpy(&bx_m1, m1, sizeof(float)_16); memcpy(&bx_m2, m2, sizeof(float)_16); memcpy(&glm_m1[0][0], m1, sizeof(float)_16); memcpy(&glm_m2[0][0], m2, sizeof(float)_16);

glm::mat4 glm_result; bx::float4x4_t bx_result;

bx::float4x4_mul(&bx_result,&bx_m1,&bx_m2 ); glm_result = glm_m1 * glm_m2;

cout << bx_result.col[0][0] <<" , "<< bx_result.col[1][0] <<" , "<< bx_result.col[2][0] <<" , "<< bx_result.col[3][0] <<endl; cout << bx_result.col[0][1] <<" , "<< bx_result.col[1][1] <<" , "<< bx_result.col[2][1] <<" , "<< bx_result.col[3][1] <<endl; cout << bx_result.col[0][2] <<" , "<< bx_result.col[1][2] <<" , "<< bx_result.col[2][2] <<" , "<< bx_result.col[3][2] <<endl; cout << bx_result.col[0][3] <<" , "<< bx_result.col[1][3] <<" , "<< bx_result.col[2][3] <<" , "<< bx_result.col[3][3] <<endl;

cout << glm_result[0][0] <<" , "<< glm_result[1][0] <<" , "<< glm_result[2][0] <<" , "<< glm_result[3][0] <<endl; cout << glm_result[0][1] <<" , "<< glm_result[1][1] <<" , "<< glm_result[2][1] <<" , "<< glm_result[3][1] <<endl; cout << glm_result[0][2] <<" , "<< glm_result[1][2] <<" , "<< glm_result[2][2] <<" , "<< glm_result[3][2] <<endl; cout << glm_result[0][3] <<" , "<< glm_result[1][3] <<" , "<< glm_result[2][3] <<" , "<< glm_result[3][3] <<endl;

return 0; }

CodeEx222 commented 9 years ago

sorry, m2 * m1 is the Correct Matrix multiplication..