📄 qmath.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 + -