画好圆圈

问题描述 投票:0回答:1

我想画一个圆,它的代码和我的输出(SDL_SetRenderDrawHexColor 是我自己的函数,给出十六进制并将其转换为rgba和。SDL_SetRenderDrawColor)

我使用的是C和C++。

vscode ide

为什么我的输出是一些pixelly我在canvas(js)中使用这种算法,这是很好的,但在sdl中它的坏,我认为像素是大的,这是真的吗?

(由于某些原因,我不能使用 SDL_gfx)

c++ c algorithm sdl sdl-2
1个回答
0
投票

三角函数的参数,如 SDL_Cos() 的单位是弧度,浮点类型(a double 在这种情况下)。) 你把它们以度数作为整数传递。

通过对角度的循环(范围应该是 0 <= i < 2 * pi)对于小半径的圆,你会画出更多的点,而对于大半径的圆,你会画出一条不连续的线。 因为 sin(x)cos(x) 是周期性函数,使用度数而不是弧度意味着你仍然可以绕着圆移动,但不是你想要的方式。

弧度 中点圆算法 是一种正确的方法。 这就利用了对称性,只计算在一个 1/8th 的圆周,然后将它们圆周投射到其他 8 个方向。

我同意其他答案,您可能在 HTML 画布中使用了亚像素抗锯齿(更严格地说,是下过采样,然后用低通滤波器下采样)。 这与您在这里尝试的用渐变绘制同心圆是完全不同的。

© www.soinside.com 2019 - 2024. All rights reserved.