49 lines
870 B
C++
49 lines
870 B
C++
#include "TRACK.H"
|
|
|
|
#define FOCALE 2.5f
|
|
#define ROTATION_FREEDOM 3
|
|
float POSIT3D_Ratio = 1.0f;//1.08f;
|
|
float POSIT3D_foc = FOCALE;
|
|
float Oofoc = 1.0f/POSIT3D_foc;
|
|
|
|
|
|
void SetCurrentFocale(float NewFoc)
|
|
{
|
|
if (NewFoc == 0.0f) NewFoc = 2.5f;
|
|
POSIT3D_foc = NewFoc;
|
|
Oofoc = 1.0f/POSIT3D_foc;
|
|
}
|
|
|
|
float GetCurrentFocale()
|
|
{
|
|
return POSIT3D_foc;
|
|
}
|
|
//#pragma optimize("",off)
|
|
|
|
|
|
Vector Project(Vector &V)
|
|
{
|
|
Vector Ret;
|
|
float Ooz;
|
|
Ooz = 1.0f / V.z;
|
|
Ret.x = POSIT3D_foc * V.x * Ooz;
|
|
Ret.y = POSIT3D_foc * V.y * Ooz;
|
|
Ret.z = Ooz;
|
|
//Ret = V;
|
|
return Ret;
|
|
}
|
|
|
|
Vector Project_2_Screen(Vector &V,MAP *RefMap)
|
|
{
|
|
Vector Ret;
|
|
float Ooz;
|
|
if (V.z > 0.001f)
|
|
{
|
|
Ooz = 1.0f / V.z;
|
|
Ret.x = 0.5f*(POSIT3D_foc * V.x * Ooz * RefMap->SX + RefMap->SX);
|
|
Ret.y = 0.5f*(POSIT3D_foc * V.y * Ooz * RefMap->SX + RefMap->SY);
|
|
Ret.z = Ooz;
|
|
} else Ret.z = -1.0f;
|
|
//Ret = V;
|
|
return Ret;
|
|
}
|