Как нарисовать линию, окрашивая один пиксель за раз в Java? - PullRequest
0 голосов
/ 14 октября 2018

Моя цель - нарисовать линии и сохранить координаты x и y всех пикселей, которые были окрашены до сих пор.Я достигаю этого, поддерживая двумерный массив

int graph[][] = new int[1000][1000]  //assuming that the applet 
                                     //window is limited to 1000px X 1000px

Скажем, я хочу нарисовать линию от (x1, y1) до (x2, y2).Я добиваюсь этого, используя метод drawLine () как

g.drawLine(x1,y1,x2,y2);  //g is a Graphics object

. В результате получится линия между заданными координатами.Я хочу отметить каждый пиксель, окрашенный в результате этого, в моей матрице графика.Таким образом, если (xk, yk) окрашен, я бы сделал

graph[xk][yk] = 1;

Используя тот факт, что для каждого приращения каждого пикселя в x, я могу получить изменение соответствующего кодирования в y (используя наклон линии), Я сделал

int d = (y2-y1)/(x2-x1);
for(int i=x1;i<x2;i++)
{
    graph[x1][y1]=1;
    g.drawLine(x1,y1,x1++,y1+=d);
}

Очевидная проблема, с которой я столкнулся, была при работе со склонами с плавающей запятой.Каждый раз, когда наклон имеет дробную часть, он просто усекает число и рисует линию с интегральным значением наклона.В результате он рисует линии, которые не являются гладкими с перерывами между ними.

Я не могу сделать d двойным / плавающим, потому что я не могу увеличить y1 на значения с плавающей запятой, поскольку это число пикселей.

Я очень плохо знаком с графикой и апплетами, так что это лучшее, что я мог придумать, чтобы получить то, что я хотел.Я был бы рад предоставить любые дальнейшие объяснения, если это необходимо.

...