Skip to content

Commit a958a11

Browse files
committed
Declare parallel Bresenham stuff outside loop
1 parent 6e7bb5b commit a958a11

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

debug-tools/examples/mul-both-axes.rs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,18 @@ fn thickline(
149149

150150
let dx = seed_delta_majorminor.major.abs();
151151
let dy = seed_delta_majorminor.minor.abs();
152+
let parallel_dx = parallel_delta_majorminor.major.abs();
153+
let parallel_dy = parallel_delta_majorminor.minor.abs();
152154

153155
// http://kt8216.unixcab.org/murphy/index.html calls e_minor E_diag, and e_major E_square
154156
let e_minor = -2 * dx;
155157
let e_major = 2 * dy;
158+
let parallel_e_minor = -2 * parallel_dx;
159+
let parallel_e_major = 2 * parallel_dy;
156160

157161
let mut seed_line_error = 2 * dy - dx;
162+
let mut parallel_error = 2 * parallel_dy - parallel_dx;
158163
let mut point = seed_line.start;
159-
let mut prev = point;
160164
let mut parallel_point = line.start;
161165

162166
for i in 0..width {
@@ -190,14 +194,7 @@ fn thickline(
190194

191195
// Draw parallel line
192196
{
193-
let dx = parallel_delta_majorminor.major.abs();
194-
let dy = parallel_delta_majorminor.minor.abs();
195-
196-
// http://kt8216.unixcab.org/murphy/index.html calls e_minor E_diag, and e_major E_square
197-
let e_minor = -2 * dx;
198-
let e_major = 2 * dy;
199-
200-
let mut parallel_line_error = 2 * dy - dx;
197+
let mut parallel_line_error = parallel_error;
201198
let mut point = parallel_point;
202199

203200
for i in 0..original_delta_majorminor.major.abs() {
@@ -207,14 +204,17 @@ fn thickline(
207204

208205
if parallel_line_error > 0 {
209206
point += parallel_step_majorminor.minor;
210-
parallel_line_error += e_minor;
207+
parallel_line_error += parallel_e_minor;
211208
}
212209

213210
point += parallel_step_majorminor.major;
214-
parallel_line_error += e_major;
211+
parallel_line_error += parallel_e_major;
215212
}
216213
}
217214

215+
// In the two blocks below, we could fix phasing here by moving `parallel_point` the right
216+
// amount. What is that amount though??
217+
218218
if seed_line_error > 0 {
219219
point += seed_step_majorminor.minor;
220220
parallel_point += seed_step_majorminor.minor;
@@ -228,14 +228,7 @@ fn thickline(
228228

229229
// Draw AA line
230230
{
231-
let dx = parallel_delta_majorminor.major.abs();
232-
let dy = parallel_delta_majorminor.minor.abs();
233-
234-
// http://kt8216.unixcab.org/murphy/index.html calls e_minor E_diag, and e_major E_square
235-
let e_minor = -2 * dx;
236-
let e_major = 2 * dy;
237-
238-
let mut parallel_line_error = 2 * dy - dx;
231+
let mut parallel_line_error = parallel_error;
239232
let mut point = parallel_point;
240233

241234
for i in 0..original_delta_majorminor.major.abs() {
@@ -265,11 +258,11 @@ fn thickline(
265258

266259
if parallel_line_error > 0 {
267260
point += parallel_step_majorminor.minor;
268-
parallel_line_error += e_minor;
261+
parallel_line_error += parallel_e_minor;
269262
}
270263

271264
point += parallel_step_majorminor.major;
272-
parallel_line_error += e_major;
265+
parallel_line_error += parallel_e_major;
273266
}
274267
}
275268

0 commit comments

Comments
 (0)