Я пытаюсь обновить метод draw
, чтобы обновить deltaY
и продолжаю рисовать до deltaY != 0
, но результат выглядит не очень хорошо. Скорее всего, вам необходимо пересмотреть свою реализацию алгоритма и связанные с ним вычисления.
void draw()
{
point(initialX, initialY);
println(initialX, initialY, p);
if (finalX > initialX )
initialX++;
else
initialX--;
if (p < 0) {
p = p + 2 * deltaY;
} else {
if (initialY > finalY)
initialY--;
else
initialY++;
p = p + 2 * deltaY - 2 * deltaX;
}
deltaY = abs(finalY - initialY); // update deltaY
counter++;
if (counter > deltaX) {
if (deltaY > 0) {
counter--;
} else {
curr++;
if (curr == points.length) {
noLoop(); // possibly you should break out of the main loop here
} else {
fixLines();
}
}
}
}
![custom algorithm](https://i.stack.imgur.com/VgwQL.png)
Реализация с line(initialX, initialY, finalX, finalY);
выглядит намного лучше.
void draw()
{
point(initialX, initialY);
println(initialX, initialY, p);
line(initialX, initialY, finalX, finalY);
curr++;
if (curr == points.length) {
noLoop();
} else {
fixLines();
}
}
![drawing with line](https://i.stack.imgur.com/K9XSG.png)