【发布时间】:2017-01-24 11:36:30
【问题描述】:
我在使用 C++ 时遇到了一个奇怪的问题。在 OpenGL 代码中,我尝试以这种方式计算一个简单的表达式
void mouse(int button, int state, int x, int y){
double posx = (x-300)/300;
double posy = -1*(y-300)/300;
switch(button){
case GLUT_LEFT_BUTTON:
if(state == GLUT_DOWN){
if(count < max){
particles[count].x = posx;
particles[count].y = posy;
particles[count].active = true;
count++;
}
glutPostRedisplay();
}
break;
default:
break;
}
}
但由于某种原因,每个粒子都出现在屏幕中心。奇怪的是,当我将double posx = (x-300)/300 替换为
double posx;
posx = x-300;
posx = posx/300;
(对 y 相同)代码有效...有人知道为什么会这样吗?也许这是一件非常简单的事情,我做错了。自从我使用 C++ 以来已经很久了,如果这是我的一个简单的错误,请见谅。
【问题讨论】:
-
(x-300)/300;进行整数除法,而您希望它进行浮点数学运算? -
posx be double 不工作?我没有在 x 上存储浮点值
标签: c++