63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
#ifndef __cuvec4f_HPP__
|
|
#define __cuvec4f_HPP__
|
|
|
|
namespace amscuda
|
|
{
|
|
|
|
class cuvec4f
|
|
{
|
|
public:
|
|
float x;
|
|
float y;
|
|
float z;
|
|
float w;
|
|
|
|
__host__ __device__ cuvec4f();
|
|
__host__ __device__ ~cuvec4f();
|
|
__host__ __device__ cuvec4f(float _x, float _y, float _z, float _w);
|
|
|
|
__host__ __device__ float& operator[](const int I);
|
|
__host__ __device__ const float& operator[](const int I) const;
|
|
|
|
__host__ __device__ cuvec4f operator+(cuvec4f lhs);
|
|
__host__ __device__ cuvec4f operator-(cuvec4f lhs);
|
|
__host__ __device__ cuvec4f operator*(float lhs);
|
|
__host__ __device__ cuvec4f operator/(float lhs);
|
|
__host__ __device__ friend cuvec4f operator-(cuvec4f rhs);
|
|
};
|
|
|
|
class cumat4f
|
|
{
|
|
public:
|
|
float dat[16];
|
|
|
|
__host__ __device__ cumat4f();
|
|
__host__ __device__ ~cumat4f();
|
|
__host__ __device__ float& operator[](const int I);
|
|
__host__ __device__ float& operator()(const int I, const int J);
|
|
__host__ __device__ float& at(const int I, const int J);
|
|
|
|
__host__ __device__ cumat4f operator+(cumat4f lhs);
|
|
__host__ __device__ cumat4f operator-(cumat4f lhs);
|
|
__host__ __device__ cumat4f operator*(float lhs);
|
|
__host__ __device__ cumat4f operator/(float lhs);
|
|
__host__ __device__ cuvec4f operator*(cuvec4f lhs);
|
|
__host__ __device__ cumat4f operator*(cumat4f lhs);
|
|
__host__ __device__ friend cumat4f operator-(cumat4f rhs);
|
|
|
|
__host__ __device__ float det();
|
|
__host__ __device__ cumat4f transpose();
|
|
__host__ __device__ cumat4f inverse();
|
|
};
|
|
|
|
__host__ __device__ float cuvec4f_dot(cuvec4f a, cuvec4f b);
|
|
__host__ __device__ float cuvec4f_norm(cuvec4f a);
|
|
__host__ __device__ cuvec4f cuvec4f_normalize(cuvec4f a);
|
|
__host__ __device__ cuvec4f cuvec4f_proj(cuvec4f a, cuvec4f b);
|
|
|
|
|
|
};
|
|
|
|
#endif
|
|
|