To: Abdur-Rahmaan Janhangeer From: Bart <b...@freeuk.com> On 24/06/2018 19:36, Abdur-Rahmaan Janhangeer wrote: > see for example > > https://en.m.wikipedia.org/wiki/Bresenham%27s_line_algorithm > > see the pseudocode, i was implementing some raster algos when i found > myself aux anges > > so close to py. i guess it was written in prehistoric times with the author > trying to simplify stuffs
I'm sorry, but that kind of code is a mish-mash of old Algol/Pascal-style languages. I doubt it was meant to be Python. Python doesn't have a monopoly on clear syntax. This is the first example from that link (I've taken out comments): function line(x0, y0, x1, y1) real deltax := x1 - x0 real deltay := y1 - y0 real deltaerr := abs(deltay / deltax) real error := 0.0 int y := y0 for x from x0 to x1 plot(x,y) error := error + deltaerr while error Γδ╪ 0.5 then y := y + sign(deltay) * 1 error := error - 1.0 This has some problems: it's using 'function' when it doesn't return a value (those languages used 'proc' or 'procedure' in that case). It doesn't give a type for the parameters, and it uses while/then rather than the usual while/do. So it's rather sloppy even for pseudo code. The only similarity with Python is the lack of block delimiters, but then with later examples they /are/ used, for if-else-endif. Below, the first block is that code tweaked to a static language of mine. The second is the same code tweaked to Python. It was less work to adapt it my syntax rather than Python. All versions however use a decidedly un-Pythonic style, which means the difference between the two below isn't that great, even though they are different languages. But imagine trying to adapt Pythonic code to work in the other language; it would be much harder (apart from one being dynamic and the other not). --------------------------------- proc line(int x0, y0, x1, y1)= real deltax := x1 - x0 real deltay := y1 - y0 real deltaerr := abs(deltay / deltax) real error := 0.0 int y := y0 int x for x := x0 to x1 do plot(x,y) error := error + deltaerr while error = 0.5 do y := y + sign(deltay) * 1 error := error - 1.0 end end end ---------------------------------- def line(x0, y0, x1, y1): deltax = x1 - x0 deltay = y1 - y0 deltaerr = abs(deltay / deltax) error = 0.0 y = y0 for x in range(x0,x1+1): plot(x,y) error = error + deltaerr while error == 0.5: y = y + sign(deltay) * 1 error = error - 1.0 -- bart --- BBBS/Li6 v4.10 Toy-3 * Origin: Prism bbs (1:261/38) -- https://mail.python.org/mailman/listinfo/python-list