В настоящее время я делаю заголовок для создания простой графики в консоли c ++.2 дня назад я добавил функцию рисования линий с использованием алгоритма растеризации, используемого здесь .
Но у меня есть проблема: поскольку декартова плоскость консоли работает только с целыми числами, моя функция неНарисуйте anithing, когда числа, приведенные, если приближены, равны 0, поэтому я бродил, если вы могли бы сделать что-то вроде этого:
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);
}
}
Ивот мой вывод, где, если линия сильно наклонена, она не отображается должным образом: image
Я действительно надеюсь, что вы можете мне помочь, но если нет, можете ли вы связать мнелучший алгоритм, который все еще прост, но который отлично работает с целыми числами?(не тот, что у Брезенхэма)