我目前正在制作一个用于在 c++ 控制台中制作简单图形的标题。2 天前,我添加了一个使用此处使用的光栅化算法绘制线条的函数。
但是我有一个问题:由于控制台的笛卡尔平面仅适用于整数,因此当给出的近似数字等于 0 时,我的函数不会绘制 anithing,所以如果你能做这样的事情,我就在徘徊:
if ( y == 0 )
{
//fix using some kind of 'forecast' of what y could be
}
所以这是我的代码:
void Engine::line(int ax, int ay, int bx, int by, int color)
{
int i = 0;
if(ax < bx)
i = 1;
if(ax > bx)
i = -1;
int dx = bx - ax;
int dy = by - ay;
for (int x = ax; x != bx; x+=i)
{
int y = ay + (by - ay) * (x - ax)/(bx - ax);
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
Engine::gotoxy(x,y); printf("%c", 219);
}
}
这是我的输出,如果线条倾斜很多,则无法正确显示: 图片
我真的希望你能帮助我,但如果没有,你能不能给我一个更好的算法,它仍然很简单,但可以很好地处理整数?(不是布雷森汉姆的那个)