我想画一个圆,它的代码和我的输出(SDL_SetRenderDrawHexColor
是我自己的函数,给出十六进制并将其转换为rgba和。SDL_SetRenderDrawColor
)
我使用的是C和C++。
为什么我的输出是一些pixelly我在canvas(js)中使用这种算法,这是很好的,但在sdl中它的坏,我认为像素是大的,这是真的吗?
(由于某些原因,我不能使用 SDL_gfx
)
三角函数的参数,如 SDL_Cos()
的单位是弧度,浮点类型(a double
在这种情况下)。) 你把它们以度数作为整数传递。
通过对角度的循环(范围应该是 0 <= i < 2 * pi
)对于小半径的圆,你会画出更多的点,而对于大半径的圆,你会画出一条不连续的线。 因为 sin(x)
和 cos(x)
是周期性函数,使用度数而不是弧度意味着你仍然可以绕着圆移动,但不是你想要的方式。
弧度 中点圆算法 是一种正确的方法。 这就利用了对称性,只计算在一个 1/8th
的圆周,然后将它们圆周投射到其他 8 个方向。
我同意其他答案,您可能在 HTML 画布中使用了亚像素抗锯齿(更严格地说,是下过采样,然后用低通滤波器下采样)。 这与您在这里尝试的用渐变绘制同心圆是完全不同的。