diff --git a/src/utils/Tools.h b/src/utils/Tools.h new file mode 100644 index 0000000..c45d47e --- /dev/null +++ b/src/utils/Tools.h @@ -0,0 +1,19 @@ +#pragma once +#include +#include "Config.h" + +namespace Tools { + inline std::pair physicalToLogical(float physicalX, float physicalY, const Viewport& viewport) { + std::pair logicalPoint = {0 , 0}; + + // 计算相对于目标矩形的坐标 + float normalizedX = (physicalX - viewport.dst.x) / viewport.dst.w; + float normalizedY = (physicalY - viewport.dst.y) / viewport.dst.h; + + // 转换为逻辑坐标 + logicalPoint.first = static_cast(normalizedX * viewport.logicalWidth); + logicalPoint.second = static_cast(normalizedY * viewport.logicalHeight); + + return logicalPoint; + } +} \ No newline at end of file