FLOAT X FLOAT Y : LineDDA // x1 y1 x2 y2 color 2 PICK 5 PICK - // x2-x1 2 PICK 5 PICK - // y2-y1 2DUPS MAX // L = max(x2-x1,y2-y1) DUP S>F ROT ROT // FS: L FDUP S>F FSWAP F/ // FS: L dY/L FSWAP S>F FSWAP F/ FSWAP // FS: dX/L dY/L // DS: x1 y1 x2 y2 color L 2 XCHG DROP 3 PICK 3 XCHG DROP 4 PICK 4 XCHG DROP 4 XCHG DROP ROT ROT // DS: color L x1 y1 S>F Y F! S>F X F! // FS: dx/L dy/L // DS: color L 1+ 0 DO FOVER X F@ F+ FDUP X F! F>S FDUP Y F@ F+ FDUP Y F! F>S 2 PICK PIXEL LOOP DROP FDROP FDROP ; 10 50 200 500 65000 LineDDA