update cumat3f constructor
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -45,6 +45,8 @@ namespace amscuda
|
|||||||
const float & _m10, const float & _m11
|
const float & _m10, const float & _m11
|
||||||
);
|
);
|
||||||
|
|
||||||
|
__host__ __device__ explicit cumat2f(const float* data2x2);
|
||||||
|
|
||||||
__host__ __device__ float& operator[](const int &I);
|
__host__ __device__ float& operator[](const int &I);
|
||||||
__host__ __device__ float& operator()(const int &I, const int &J);
|
__host__ __device__ float& operator()(const int &I, const int &J);
|
||||||
__host__ __device__ float& at(const int &I, const int &J);
|
__host__ __device__ float& at(const int &I, const int &J);
|
||||||
@ -65,8 +67,8 @@ namespace amscuda
|
|||||||
__host__ __device__ cumat2f transpose();
|
__host__ __device__ cumat2f transpose();
|
||||||
__host__ __device__ cumat2f inverse();
|
__host__ __device__ cumat2f inverse();
|
||||||
|
|
||||||
__host__ __device__ float* data(); //pointer to float[9] representation of matrix
|
__host__ __device__ float* data(); //pointer to float[4] representation of matrix
|
||||||
__host__ __device__ const float* data() const; //pointer to float[9] representation of matrix
|
__host__ __device__ const float* data() const; //pointer to float[4] representation of matrix
|
||||||
|
|
||||||
//In place operations (to save GPU register use)
|
//In place operations (to save GPU register use)
|
||||||
__host__ __device__ cumat2f& operator+=(const cumat2f &rhs);
|
__host__ __device__ cumat2f& operator+=(const cumat2f &rhs);
|
||||||
@ -82,10 +84,21 @@ namespace amscuda
|
|||||||
__host__ __device__ cuvect2f cuvect2f_normalize(const cuvect2f &a);
|
__host__ __device__ cuvect2f cuvect2f_normalize(const cuvect2f &a);
|
||||||
__host__ __device__ cuvect2f cuvect2f_proj(const cuvect2f &a, const cuvect2f &b);
|
__host__ __device__ cuvect2f cuvect2f_proj(const cuvect2f &a, const cuvect2f &b);
|
||||||
|
|
||||||
__host__ __device__ cumat2f mat2f_rot_from_angle(const cuvect3f &axis, const float &angle);
|
__host__ __device__ cumat2f cumat2f_rot_from_angle(const float &angle);
|
||||||
|
|
||||||
|
|
||||||
|
///////////
|
||||||
|
// Tests //
|
||||||
|
///////////
|
||||||
|
void test_cuvect2f_1();
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////
|
||||||
|
//legacy array operations//
|
||||||
|
///////////////////////////
|
||||||
|
|
||||||
//2x2 matrix operations
|
//2x2 matrix operations
|
||||||
//matrix order is assumed to be mat[I,J] = mat[I+3*J]
|
//matrix order is assumed to be mat[I,J] = mat[I+2*J]
|
||||||
|
|
||||||
//transpose a 2x2 matrix in place
|
//transpose a 2x2 matrix in place
|
||||||
__host__ __device__ void mat2f_transpose(float *mat2inout);
|
__host__ __device__ void mat2f_transpose(float *mat2inout);
|
||||||
@ -106,7 +119,7 @@ namespace amscuda
|
|||||||
__host__ __device__ cuvect2f mat2f_mult(float *mat2a, const cuvect2f &b);
|
__host__ __device__ cuvect2f mat2f_mult(float *mat2a, const cuvect2f &b);
|
||||||
|
|
||||||
|
|
||||||
void test_cuvect2f_1();
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -47,6 +47,9 @@ namespace amscuda
|
|||||||
const float & _m20, const float & _m21, const float & _m22
|
const float & _m20, const float & _m21, const float & _m22
|
||||||
);
|
);
|
||||||
|
|
||||||
|
__host__ __device__ explicit cumat3f(const float *data9);
|
||||||
|
|
||||||
|
|
||||||
__host__ __device__ float& operator[](const int &I);
|
__host__ __device__ float& operator[](const int &I);
|
||||||
__host__ __device__ float& operator()(const int &I, const int &J);
|
__host__ __device__ float& operator()(const int &I, const int &J);
|
||||||
__host__ __device__ float& at(const int &I, const int &J);
|
__host__ __device__ float& at(const int &I, const int &J);
|
||||||
|
|||||||
@ -421,7 +421,24 @@ namespace amscuda
|
|||||||
return (const float*) this;
|
return (const float*) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__host__ __device__ cumat2f::cumat2f(const float* data2x2)
|
||||||
|
{
|
||||||
|
m00 = data2x2[0];
|
||||||
|
m10 = data2x2[1];
|
||||||
|
m01 = data2x2[2];
|
||||||
|
m11 = data2x2[3];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
__host__ __device__ cumat2f cumat2f_rot_from_angle(const float &angle)
|
||||||
|
{
|
||||||
|
cumat2f R;
|
||||||
|
R(0,0) = ::cosf(angle);
|
||||||
|
R(1,0) = ::sinf(angle);
|
||||||
|
R(0,1) = -::sinf(angle);
|
||||||
|
R(1,1) = ::cosf(angle);
|
||||||
|
return R;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
//legacy array operations//
|
//legacy array operations//
|
||||||
|
|||||||
@ -191,6 +191,20 @@ __host__ __device__ cumat3f::~cumat3f()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__host__ __device__ cumat3f::cumat3f(const float *data9)
|
||||||
|
{
|
||||||
|
m00 = data9[0];
|
||||||
|
m10 = data9[1];
|
||||||
|
m20 = data9[2];
|
||||||
|
m01 = data9[3];
|
||||||
|
m11 = data9[4];
|
||||||
|
m21 = data9[5];
|
||||||
|
m02 = data9[6];
|
||||||
|
m12 = data9[7];
|
||||||
|
m22 = data9[8];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
__host__ __device__ float& cumat3f::operator[](const int &I)
|
__host__ __device__ float& cumat3f::operator[](const int &I)
|
||||||
{
|
{
|
||||||
if(I==0) return m00;
|
if(I==0) return m00;
|
||||||
|
|||||||
Reference in New Issue
Block a user