⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmath.cpp

📁 BCB下的高效开发包。包含大并发的网络库
💻 CPP
字号:
//---------------------------------------------------------------------------


#pragma hdrstop
#include "QMath.h"
#include <math.h>
#pragma package(smart_init)
//---------------------------------------------------------------------------
void GetVec2D(int* pX, int* pY, int Size, int Direct)
{
        const double MathDirect = (double)(Direct) * 3.1415927 / 180;
        if (pX)
                *pX = (int)(cos(MathDirect) * Size);
        if (pY)
                *pY = (int)(sin(MathDirect) * Size);
        return;
}
//---------------------------------------------------------------------------
void GetScreenVec2D(int* pX, int* pY, int Size, int Direct)
{
        GetVec2D(pX, pY, Size, Direct - 90);
}
//---------------------------------------------------------------------------
void GetSDFromVec2D(int* pSize, int* pDirect, int X, int Y)
{
        if (pSize)
                *pSize = (int)sqrt(X * X + Y * Y);
        if (pDirect) {
                if (0 == X && 0 == Y) {
                        *pDirect = 0;
                } else {
                        *pDirect = (int)(360 + atan2(Y, X) * 180 / 3.1415927) % 360;
                }
        }
}
//---------------------------------------------------------------------------
void GetSDFromScreenVec2D(int* pSize, int* pDirect, int X, int Y)
{
        GetSDFromVec2D(pSize, pDirect, X, Y);
        if (pDirect)
                *pDirect = (*pDirect + 90 + 360) % 360;
}

//---------------------------------------------------------------------------
void GetVec2DDB(double* pX, double* pY, double Size, int Direct)
{
        const double MathDirect = (double)(Direct) * 3.1415927 / 180;
        if (pX)
                *pX = (double)(cos(MathDirect) * Size);
        if (pY)
                *pY = (double)(sin(MathDirect) * Size);
        return;
}
//---------------------------------------------------------------------------
void GetScreenVec2DDB(double* pX, double* pY, double Size, int Direct)
{
        GetVec2DDB(pX, pY, Size, Direct - 90);
}
//---------------------------------------------------------------------------
void GetSDFromVec2DDB(double* pSize, int* pDirect, double X, double Y)
{
        if (pSize)
                *pSize = (double)sqrt(X * X + Y * Y);
        if (pDirect) {
                if (0 == X && 0 == Y) {
                        *pDirect = 0;
                } else {
                        *pDirect = (int)(360 + atan2(Y, X) * 180 / 3.1415927) % 360;
                }
        }
}
//---------------------------------------------------------------------------
void GetSDFromScreenVec2DDB(double* pSize, int* pDirect, double X, double Y)
{
        GetSDFromVec2DDB(pSize, pDirect, X, Y);
        if (pDirect)
                *pDirect = (*pDirect + 90 + 360) % 360;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -