Моя цель - нарисовать линии и сохранить координаты 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 на значения с плавающей запятой, поскольку это число пикселей.
Я очень плохо знаком с графикой и апплетами, так что это лучшее, что я мог придумать, чтобы получить то, что я хотел.Я был бы рад предоставить любые дальнейшие объяснения, если это необходимо.