- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用函数 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 的整数。当用户使用键盘功能中的“b”键选择形状时,他/她可以在用户单击并拖动鼠标时切换鼠标周围绘制的形状大约。就像喷漆一样。除圆形喷雾外,所有其他形状都围绕着鼠标工作。
最佳答案
这个答案假设你的视口(viewport)和投影矩阵之类的东西设置正确,并且这个函数的输入考虑到“屏幕坐标”(鼠标使用的)与“OpenGL 坐标空间”(这通常意味着反转一个或另一个的 y 轴方向)。
您用于设置顶点坐标的数学是错误的。鼠标的 x
和 y
坐标不应乘以正弦/余弦函数。
正确的写法是
glVertex2f((size/2) * cos(theta) + x, (size/2) * sin(theta) + y);
我还要补充一点,您似乎仍在使用 OpenGL 的即时模式渲染,该渲染已被弃用,并且会为专业设置提供极差的培训。我强烈建议您学习 Modern OpenGL (3.x+),并将这些概念重新应用到您已经从事的任何项目中。 This is a very good tutorial.
关于c++ - OpenGL 用鼠标移动画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39374433/
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!