//Bresenham demo
// This is much like
void setup() {
const int N = 3; // number of iterations
int n[] = {N, 7, 12, 13, 1, 0, N - 1}; // Numerator of n/N step ratio, higest N in first column
const int num = sizeof(n) / sizeof(n[0]);
int D[num]; // Bresenham sum for decision rule
// scale and offset
const int scaleFactor = 1; // 2 for bresenham to handle 1/2
const int offset = 0; //-N*scaleFactor; // -N*scaleFactor to make decision rule compare to zero
Serial.begin(115200);
Serial.print("It/n:");
// Initialize to center the sub-steps
for (int j = 0; j < num; ++j) {
D[j] = N * scaleFactor / 2 + offset ; // center
Serial.print("\t+");
Serial.print(n[j]);
}
Serial.println();
for (int i = 0; i < N; ++i) {
Serial.print("i:");
Serial.print(i);
for (int j = 0; j < num; ++j) {
Serial.print("\t");
D[j] += scaleFactor * n[j];
Serial.print(D[j]);
if (D[j] >= N * scaleFactor + offset) {
D[j] -= N * scaleFactor;
Serial.print("*-");
Serial.print(N * scaleFactor);
}
}
Serial.println();
}
Serial.print("*: Decision to step & subtract ");
Serial.print(N * scaleFactor);
Serial.println();
}
void loop() {
}