37 lines
826 B
C++
37 lines
826 B
C++
#pragma once
|
|
#include "maths.h"
|
|
|
|
struct vector_type4
|
|
{
|
|
float X;
|
|
float Y;
|
|
float Z;
|
|
float W;
|
|
};
|
|
|
|
struct mat4_row_major
|
|
{
|
|
vector_type4 Row0;
|
|
vector_type4 Row1;
|
|
vector_type4 Row2;
|
|
vector_type4 Row3;
|
|
};
|
|
|
|
|
|
class proj
|
|
{
|
|
public:
|
|
static void init(float* mat4x3, float d, float centerX, float centerY, float zMin, float zScaler);
|
|
static vector3 matrix_vector_multiply(const mat4_row_major& mat, const vector3& vec);
|
|
static float z_distance(const vector3& vec);
|
|
static vector2i xform_to_2d(const vector3& vec);
|
|
static vector2i xform_to_2d(const vector2& vec);
|
|
static vector3 ReverseXForm(const vector2i& vec);
|
|
static void recenter(float centerX, float centerY);
|
|
static uint16_t NormalizeDepth(float depth);
|
|
private:
|
|
static mat4_row_major matrix;
|
|
static float d_, centerx, centery;
|
|
static float zscaler, zmin, zmax;
|
|
};
|