我想知道这里是否有人可以帮助我使用一些伪代码,或者至少指出我如何在没有抗锯齿的情况下绘制圆弧段的正确方向。
答案 0 :(得分:1)
圆圈上的点数公式为:
x = xcenter + radius * sin(theta)
y = ycenter + radius * cos(theta)
其中xcenter
和ycenter
是圆的中心,radius
是半径,theta
是角度。
您只需以足够小的步长从起始角度到结束角度迭代theta
,并提取x
和y
值以进行绘图,并记住大多数三角函数将其参数作为弧度(0到2 * PI)而非度数(0到360) - 调整您的{em>和 theta
的开始和结束角度考虑到这一点。
伪代码如下所示:
def plotCirle (xc, yc, rad, start, end):
theta = start
while theta <= end:
x = xc + rad * sin (theta)
y = yc + rad * cos (theta)
plot (x, y)
theta = theta + 0.01
虽然您可能希望将角度标准化为介于0和2 * PI之间,然后如果前者大于后者,则交换开始和结束角度。
如果您想要更高效的代码,可以查看midpoint circle algorithm。数学比较重,并且由于你只需要一个片段(这意味着你需要知道角度,这个算法通常不需要一个完整的圆圈)而稍微复杂一点,但这可能是一个很好的起点,如果上面的简化算法不够快。
答案 1 :(得分:0)
对于仅整数圆绘图,请参阅维基百科的midpoint circle algorithm文章。它通过代码呈现了一种Bresenham线算法的圆形变体。有关中点圆算法,Bresenham圆算法和优化的第三种方法的比较(包括代码),请参阅codecircle。
答案 2 :(得分:0)
Result.X := Round( fCenter.X + cos(Angle/180*pi)* Radius);
Result.Y := Round( fCenter.Y + sin(Angle/180*pi)* Radius);