我正在使用CImg库在C ++中创建一个类似LOGO Turtle的对象。当试图绘制一个圆圈时,定义为循环360次的命令repeat 360[fd 1 rt1]
,向前移动1个像素并在每次迭代时向右转1度。使用我的代码虽然我得到的是更加八角形的形状,而不是实际的圆形。
前进代码:
void turtle::fd(int distance)
{
int endx, endy;
endx = posx-(int)round((distance*sin(heading * PI / 180)));
endy = posy-(int)round((distance*cos(heading * PI / 180)));
if(pen)
window->draw_line(posx, posy, endx, endy, color1, 1);
posx=endx;
posy=endy;
}
在CImg中,draw_line()
会从位置posx
posy
到endx
endy
画一条线,其余的是颜色和不透明度。
为了向右转:
void turtle::rt(int degree)
{
heading -= degree;
if(heading < 0)
heading = (360-abs(heading));
}