【发布时间】:2016-09-07 15:53:22
【问题描述】:
我正在尝试使用函数 mouseMove(int x, int y) 在我单击鼠标并将其拖过屏幕时绘制一个以鼠标为中心的圆圈。圆圈将像喷漆一样在移动的鼠标上绘制。到目前为止,这就是我所拥有的
void mouseMove(int x, int y) {
glBegin(GL_POLYGON);
for (int i = 0; i <= 360; i++)
{
float theta = (2 * 3.14 * i) / 360;
glVertex2f((size/2 + x) * cos(theta), (size/2 + y) * sin(theta));
}
glEnd();
glutPostRedisplay();
}
但是当使用它时,它会画出非常大的圆圈,这些圆圈并不以我的鼠标为中心。我将如何改变它以使程序以我的鼠标为中心绘制圆圈?
为了描述这个项目,我正在创建一个绘画程序,它可以更改在 mouseMove 中完成的绘图的形状、颜色、大小和旋转。目前,大小是设置为 32 的 int。当用户在键盘功能中使用“b”键选择形状时,他/她可以在用户单击并拖动鼠标时切换鼠标周围绘制的形状大约。就像喷漆一样。除圆形喷雾外,所有其他形状都围绕鼠标成型。
【问题讨论】:
-
这可能是因为您的相机已关闭。消歧:就位置而言。
-
这个函数内部还有其他形状的if语句,例如正方形和三角形。所有这些都正确绘制。这是唯一一个关闭的。
-
我认为在问题中包含您的投影是如何制作的(正交或透视?尺寸?Fov?)