update
This commit is contained in:
@ -75,16 +75,50 @@ double getDoubleVal(VARIANT *pvarPropVal)
|
||||
return 0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string getStringVal(VARIANT *pvarPropVal)
|
||||
//Преобразование типов если нужно
|
||||
//---------------------------------------------------------------------------
|
||||
//Преобразование типов если нужно
|
||||
std::string getStringVal(VARIANT* pvarPropVal, const std::string& dateFormat = "")
|
||||
{
|
||||
if(pvarPropVal->vt==VT_BOOL) return Utility::IntToStdStr(pvarPropVal->boolVal==0 ? 0 : 1); else
|
||||
if(pvarPropVal->vt==VT_I2) return Utility::IntToStdStr(pvarPropVal->bVal); else
|
||||
if(pvarPropVal->vt==VT_I4) return Utility::IntToStdStr(pvarPropVal->intVal); else
|
||||
if(pvarPropVal->vt==VT_R4) return Utility::FloatToStdStr(pvarPropVal->fltVal); else
|
||||
if(pvarPropVal->vt==VT_R8) return Utility::FloatToStdStr(pvarPropVal->dblVal); else
|
||||
if(pvarPropVal->vt==VT_BSTR) return getSTDStr(pvarPropVal->bstrVal); else
|
||||
return "";
|
||||
switch (pvarPropVal->vt)
|
||||
{
|
||||
case VT_BOOL:
|
||||
return Utility::IntToStdStr(pvarPropVal->boolVal == 0 ? 0 : 1);
|
||||
case VT_I2:
|
||||
return Utility::IntToStdStr(pvarPropVal->bVal);
|
||||
case VT_I4:
|
||||
return Utility::IntToStdStr(pvarPropVal->intVal);
|
||||
case VT_R4:
|
||||
return Utility::FloatToStdStr(pvarPropVal->fltVal);
|
||||
case VT_R8:
|
||||
return Utility::FloatToStdStr(pvarPropVal->dblVal);
|
||||
case VT_BSTR:
|
||||
return getSTDStr(pvarPropVal->bstrVal);
|
||||
case VT_DATE:
|
||||
{
|
||||
SYSTEMTIME st;
|
||||
if (VariantTimeToSystemTime(pvarPropVal->date, &st))
|
||||
{
|
||||
std::string fmt = dateFormat.empty() ? "%Y-%m-%dT%H:%M:%S" : dateFormat;
|
||||
struct tm tm = { 0 };
|
||||
tm.tm_year = st.wYear - 1900;
|
||||
tm.tm_mon = st.wMonth - 1;
|
||||
tm.tm_mday = st.wDay;
|
||||
tm.tm_hour = st.wHour;
|
||||
tm.tm_min = st.wMinute;
|
||||
tm.tm_sec = st.wSecond;
|
||||
tm.tm_isdst = -1;
|
||||
char buf[256];
|
||||
if (strftime(buf, sizeof(buf), fmt.c_str(), &tm) > 0)
|
||||
{
|
||||
return std::string(buf);
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
std::wstring getWStringVal(VARIANT *pvarPropVal)
|
||||
@ -126,7 +160,7 @@ _bstr_t bs(vt);
|
||||
return std::string(static_cast<const char*>(bs));
|
||||
}*/
|
||||
//---------------------------------------------------------------------------
|
||||
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Unicode BSTR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ANSI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string
|
||||
///Преобразование из Unicode BSTR строки в ANSI строку std::string
|
||||
std::string getSTDStr(const BSTR& unicodestr)
|
||||
{
|
||||
std::string str="";
|
||||
@ -150,11 +184,11 @@ std::wstring getSTDWStr(const BSTR& unicodestr)
|
||||
return unicodestr;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ini <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Сохранить параметр в ini файл
|
||||
bool IniWriteW(std::wstring filename,std::wstring section,std::wstring key,std::wstring data)
|
||||
{
|
||||
std::wstring str= Utility::BeforeWLast(filename,L'\\');
|
||||
CreateDirectory(str.c_str(), NULL); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
CreateDirectory(str.c_str(), NULL); //Пробуем создать папку
|
||||
|
||||
return WritePrivateProfileString(
|
||||
(LPCWSTR)section.c_str(),
|
||||
@ -178,7 +212,7 @@ std::wstring IniReadW(std::wstring filename,std::wstring section,std::wstring ke
|
||||
return out;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Путь к "Application Data" для всех пользователей
|
||||
std::wstring getCommonAppPathW()
|
||||
{
|
||||
wchar_t szPath[MAX_PATH];
|
||||
@ -186,7 +220,7 @@ std::wstring getCommonAppPathW()
|
||||
return szPath;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Путь к "Application Data" для всех пользователей
|
||||
std::string getCommonAppPathA()
|
||||
{
|
||||
char szPath[MAX_PATH];
|
||||
@ -194,7 +228,7 @@ std::string getCommonAppPathA()
|
||||
return szPath;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Путь к "Application Data" для текущего пользователя
|
||||
/*std::wstring getDefaultAppPathW()
|
||||
{
|
||||
wchar_t szPath[MAX_PATH];
|
||||
@ -202,7 +236,7 @@ std::string getCommonAppPathA()
|
||||
return szPath;
|
||||
}*/
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Путь к "Application Data" пользователя
|
||||
std::wstring getAppDataPathW()
|
||||
{
|
||||
wchar_t szPath[MAX_PATH];
|
||||
@ -210,7 +244,7 @@ std::wstring getAppDataPathW()
|
||||
return szPath;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Путь к "Application Data" пользователя
|
||||
std::string getAppDataPathA()
|
||||
{
|
||||
char szPath[MAX_PATH];
|
||||
@ -218,14 +252,14 @@ std::string getAppDataPathA()
|
||||
return szPath;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Выключить компьютер
|
||||
bool shoot(bool reboot, bool force)
|
||||
{
|
||||
/*
|
||||
OSVERSIONINFO ver;
|
||||
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
GetVersionEx(&ver);
|
||||
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NT <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SE_SHUTDOWN_NAME
|
||||
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // в семействе NT для выключения необходимо иметь привилегию SE_SHUTDOWN_NAME
|
||||
{
|
||||
HANDLE hToken;
|
||||
TOKEN_PRIVILEGES* NewState;
|
||||
@ -267,7 +301,7 @@ std::string getCurrentFilePath()
|
||||
*/
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Прочитать версию файла
|
||||
std::string getFileVersion( std::wstring path )
|
||||
{
|
||||
DWORD dwHandle, sz = GetFileVersionInfoSizeW( path.c_str(), & dwHandle );
|
||||
|
||||
16
lib/WTools.h
16
lib/WTools.h
@ -7,9 +7,9 @@
|
||||
//---------------------------------------------------------------------------
|
||||
typedef unsigned int uint4;
|
||||
//---------------------------------------------------------------------------
|
||||
//<EFBFBD><EFBFBD><EFBFBD> Windows <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Для Windows платформы
|
||||
//---------------------------------------------------------------------------
|
||||
//std::string getHDDSerial(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
//std::string getHDDSerial(); //Получить серийный номер С диска
|
||||
//void cpuid (int output[4], int functionnumber);
|
||||
|
||||
std::string getSTDStr(const BSTR& unicodestr);
|
||||
@ -17,11 +17,11 @@ typedef unsigned int uint4;
|
||||
|
||||
BSTR stdStrToBSTR(const std::string& s);
|
||||
BSTR stdWStrToBSTR(const std::wstring& s);
|
||||
std::wstring getCommonAppPathW(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data"
|
||||
std::wstring getCommonAppPathW(); //Путь к "Application Data"
|
||||
std::string getCommonAppPathA();
|
||||
std::wstring getAppDataPathW(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string getAppDataPathA(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string getCurrentFilePath(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL
|
||||
std::wstring getAppDataPathW(); //Путь к "Application Data" текущего пользователя
|
||||
std::string getAppDataPathA(); //Путь к "Application Data" текущего пользователя
|
||||
std::string getCurrentFilePath(); //Путь к текущей DLL
|
||||
std::string getFileVersion( std::wstring path );
|
||||
|
||||
std::wstring IniReadW(std::wstring filename,std::wstring section,std::wstring key);
|
||||
@ -32,9 +32,9 @@ typedef unsigned int uint4;
|
||||
bool getBoolVal(VARIANT *pvarPropVal);
|
||||
float getFloatVal(VARIANT *pvarPropVal);
|
||||
double getDoubleVal(VARIANT *pvarPropVal);
|
||||
std::string getStringVal(VARIANT *pvarPropVal);
|
||||
std::string getStringVal(VARIANT* pvarPropVal, const std::string& dateFormat);
|
||||
std::wstring getWStringVal(VARIANT *pvarPropVal);
|
||||
|
||||
bool shoot(bool reboot, bool force); //<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool shoot(bool reboot, bool force); //<Выключить комп
|
||||
//------------------------------------------------------------------------------
|
||||
#endif
|
||||
@ -175,19 +175,19 @@ int RandInt(int a, int b)
|
||||
//Расстояние от начала декартовых координат до заданной точки
|
||||
float fnGetDistans(RfPointXYZ p)
|
||||
{
|
||||
return sqrt(sqr(p.x) + sqr(p.y) + sqr(p.z));
|
||||
return (float)sqrt(sqr(p.x) + sqr(p.y) + sqr(p.z));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
//Расстояние между 2мя точками на плоскости в декартовых координатах
|
||||
float fnGetDistans2d(RfPointXY PointXY1, RfPointXY PointXY2)
|
||||
{
|
||||
return sqrt(fabs(sqr(PointXY1.x - PointXY2.x) + sqr(PointXY1.y - PointXY2.y)));
|
||||
return (float)sqrt(fabs(sqr(PointXY1.x - PointXY2.x) + sqr(PointXY1.y - PointXY2.y)));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
//Расстояние между 2мя точками в пространстве в декартовых координатах
|
||||
float fnGetDistans3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2)
|
||||
{
|
||||
return sqrt(fabs(sqr(PointXYZ1.x - PointXYZ2.x) + sqr(PointXYZ1.y - PointXYZ2.y) + sqr(PointXYZ1.z - PointXYZ2.z)));
|
||||
return (float)sqrt(fabs(sqr(PointXYZ1.x - PointXYZ2.x) + sqr(PointXYZ1.y - PointXYZ2.y) + sqr(PointXYZ1.z - PointXYZ2.z)));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
float sqr(float val)
|
||||
@ -286,7 +286,7 @@ void CalcNormals(float x0, float y0, float z0, float x1, float y1, float z1, flo
|
||||
a = (y1 - y0)*(z2 - z0) - (y2 - y0)*(z1 - z0);
|
||||
b = (x2 - x0)*(z1 - z0) - (x1 - x0)*(z2 - z0);
|
||||
c = (x1 - x0)*(y2 - y0) - (y1 - y0)*(x2 - x0);
|
||||
r = sqrt(a*a + b*b + c*c);
|
||||
r = (float)sqrt(a*a + b*b + c*c);
|
||||
if (r != 0) r = 1 / r;
|
||||
xr = a*r;
|
||||
yr = b*r;
|
||||
@ -333,7 +333,7 @@ void fnCalcCircle(RfPointXYZ p1, RfPointXYZ p2, RfPointXYZ p3, float &a, float &
|
||||
{ //всё в 1 точке
|
||||
r = 0;
|
||||
}
|
||||
r = sqrt((a - p1.x)*(a - p1.x) + (b - p1.y)*(b - p1.y));
|
||||
r = (float)sqrt((a - p1.x)*(a - p1.x) + (b - p1.y)*(b - p1.y));
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Из декартовых в полярные
|
||||
@ -345,13 +345,13 @@ r - радиус
|
||||
void NormalInPolar3d(float x, float y, float z, float &AngleH, float &AngleV, float &r)
|
||||
{
|
||||
if (x == 0.0) x = 0.0000001f;
|
||||
r = sqrt(x*x + y*y + z*z);
|
||||
AngleH = fabs(atan(y / x));
|
||||
r = (float)sqrt(x*x + y*y + z*z);
|
||||
AngleH = (float)fabs(atan(y / x));
|
||||
if ((x <= 0) && (y <= 0)) AngleH = (float)(PI - AngleH);
|
||||
if ((x<0) && (y>0)) AngleH = (float)(AngleH + PI);
|
||||
if ((x >= 0) && (y >= 0)) AngleH = (float)(2.0f*PI - AngleH);
|
||||
if (AngleH>PI*2.0f) AngleH = (float)(AngleH - PI*2.0f);
|
||||
AngleV = fabs(atan(z / sqrt(x*x + y*y)));
|
||||
AngleV = (float)fabs(atan(z / sqrt(x*x + y*y)));
|
||||
if (z<0) AngleV = -AngleV;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
@ -363,8 +363,8 @@ r - радиус
|
||||
void NormalInPolar2d(float x, float y, float &Angle, float &r)
|
||||
{
|
||||
if (x == 0.0) x = 0.0000001f;
|
||||
r = sqrt(x*x + y*y);
|
||||
Angle = fabs(atan(y / x));
|
||||
r = (float)sqrt(x*x + y*y);
|
||||
Angle = (float)fabs(atan(y / x));
|
||||
if ((x <= 0) && (y <= 0)) Angle = (float)(PI - Angle);
|
||||
if ((x<0) && (y>0)) Angle = (float)(Angle + PI);
|
||||
if ((x >= 0) && (y >= 0)) Angle = (float)(2.0f*PI - Angle);
|
||||
@ -560,9 +560,9 @@ RfPointXY ApproachPoint2d(RfPointXY PointXY1, RfPointXY PointXY2, float Distans)
|
||||
float dist;
|
||||
RfPointXY LengthXY;
|
||||
|
||||
LengthXY.x = fabs(PointXY1.x - PointXY2.x);
|
||||
LengthXY.y = fabs(PointXY1.y - PointXY2.y);
|
||||
dist = sqrt(sqr(LengthXY.x) + sqr(LengthXY.y));
|
||||
LengthXY.x = (float)fabs(PointXY1.x - PointXY2.x);
|
||||
LengthXY.y = (float)fabs(PointXY1.y - PointXY2.y);
|
||||
dist = (float)sqrt(sqr(LengthXY.x) + sqr(LengthXY.y));
|
||||
|
||||
dist = Distans / dist;
|
||||
PointXY2.x = PointXY1.x*(1 - dist) + PointXY2.x*dist;
|
||||
@ -577,11 +577,11 @@ RfPointXYZ ApproachPoint3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2, float Dis
|
||||
float dist;
|
||||
RfPointXYZ LengthXYZ;
|
||||
|
||||
LengthXYZ.x = fabs(PointXYZ1.x - PointXYZ2.x);
|
||||
LengthXYZ.y = fabs(PointXYZ1.y - PointXYZ2.y);
|
||||
LengthXYZ.z = fabs(PointXYZ1.z - PointXYZ2.z);
|
||||
LengthXYZ.x = (float)fabs(PointXYZ1.x - PointXYZ2.x);
|
||||
LengthXYZ.y = (float)fabs(PointXYZ1.y - PointXYZ2.y);
|
||||
LengthXYZ.z = (float)fabs(PointXYZ1.z - PointXYZ2.z);
|
||||
|
||||
dist = sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z));
|
||||
dist = (float)sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z));
|
||||
dist = Distans / dist;
|
||||
PointXYZ2.x = PointXYZ1.x*(1 - dist) + PointXYZ2.x*dist;
|
||||
PointXYZ2.y = PointXYZ1.y*(1 - dist) + PointXYZ2.y*dist;
|
||||
@ -596,11 +596,11 @@ RfPointXYZ setDistancePoint3d(RfPointXYZ PointXYZ1, RfPointXYZ PointXYZ2, float
|
||||
float dist;
|
||||
RfPointXYZ LengthXYZ;
|
||||
|
||||
LengthXYZ.x = fabs(PointXYZ1.x - PointXYZ2.x);
|
||||
LengthXYZ.y = fabs(PointXYZ1.y - PointXYZ2.y);
|
||||
LengthXYZ.z = fabs(PointXYZ1.z - PointXYZ2.z);
|
||||
LengthXYZ.x = (float)fabs(PointXYZ1.x - PointXYZ2.x);
|
||||
LengthXYZ.y = (float)fabs(PointXYZ1.y - PointXYZ2.y);
|
||||
LengthXYZ.z = (float)fabs(PointXYZ1.z - PointXYZ2.z);
|
||||
|
||||
dist = sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z));
|
||||
dist = (float)sqrt(sqr(LengthXYZ.x) + sqr(LengthXYZ.y) + sqr(LengthXYZ.z));
|
||||
dist = 1 - Distans / dist;
|
||||
PointXYZ2.x = PointXYZ1.x*(1 - dist) + PointXYZ2.x*dist;
|
||||
PointXYZ2.y = PointXYZ1.y*(1 - dist) + PointXYZ2.y*dist;
|
||||
|
||||
@ -24,6 +24,7 @@ const uint2 file_id=65500;//*((uint2*)"TB");//16980 id файла базы да
|
||||
const uint2 file_version=1; //текущая версия файла базы данных 2 байта
|
||||
//---------------------------------------------------------------------------
|
||||
//типы данных которые можно хранить в базе под них 1 байт
|
||||
#define BD_UINT1_B 27 //1 байт без знаковый
|
||||
#define BD_UINT1 0 //1 байт без знаковый
|
||||
#define BD_UINT2 1 //2 байт без знаковый
|
||||
//#define BD_UINT3 2 //3 байт без знаковый
|
||||
|
||||
Reference in New Issue
Block a user