// @COMPILECMD g++ $@ -o $*.out -ggdb $(pkg-config --cflags --libs ncurses) #include // MAX() #include #include typedef struct { int y; int x; } spatial; void dda(const char c, const spatial from, const spatial to) { const int steps = MAX(abs(to.y - from.y), abs(to.x - from.x)); struct { double y; double x; } d = { .y = (double)from.y, .x = (double)from.x, }; for (int i = 0; i < steps+1; i++) { mvaddch(round(d.y), round(d.x), c); d.y += (double)(to.y - from.y) / (double)steps; d.x += (double)(to.x - from.x) / (double)steps; } return; } signed main() { initscr(); noecho(); curs_set(0); spatial from = {6, 20}; spatial to = {3, 0}; dda('-', from, to); refresh(); while(1){} endwin(); return 0; }