c - 如何将 X 和 Y 屏幕坐标转换为 -1.0, 1.0 float? (在C中)

标签 c math floating-point screen coordinates

我正在尝试将 X 和 Y 屏幕坐标转换为浮点范围 -1.0 到 1.0。

(-1,-1 为 0,0,如果分辨率为 640x480,1,1 将是 640,480。0,0 将是 320,240...中心。)

我该如何处理这个问题?我做了几次徒劳的尝试,而且我不太擅长数学。

最佳答案

这是一些 C 代码

void convert(int X, int Y)
{
  float newx = 2*(X-320.0f)/640.0f;
  float newy = 2*(Y-240.0f)/480.0f;

  printf("New x = %f, New y = %f", newx, newy);
}

编辑:添加了 f 后缀以确保我们不进行整数数学!

关于c - 如何将 X 和 Y 屏幕坐标转换为 -1.0, 1.0 float? (在C中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31553325/

相关文章:

c++ - 在 c header 中使用来自 c++ header 的枚举类

c - 为什么启用优化后 GCC 11 编译器会产生奇怪的输出?

c - 指针的大小,C中指向指针的指针

可以成功捕获 CTRL-Z,但不能捕获 SIGTSTP

java - 旋转矩形并计算角点

c++ - 我的问题是关于 C++ 中数字和序列的重复以及如何打印它们?

algorithm - 大小为 MxN 的矩阵中大小为 AxB 的子矩阵的数量

floating-point - 为什么NaN存在?

c - 确定 float 是否有小数部分?

java - Double 上的数学运算结果是否完全可重复?