1
+ @ echo off & setlocal enableDelayedExpansion
2
+ for /f %%a in ('echo prompt $E^ | cmd') do set " \e = %%a "
3
+ chcp 65001 > nul
4
+
5
+ set /a " wid = 80,hei = 50"
6
+ mode %wid% ,%hei%
7
+ (set \n=^^ ^
8
+ %= This creates an escaped Line Feed - DO NOT ALTER =%
9
+ )
10
+
11
+ set " sqrt = ( M=(N),j=M/(11264)+40, j=(M/j+j)>>1, j=(M/j+j)>>1, j=(M/j+j)>>1, j=(M/j+j)>>1, j=(M/j+j)>>1, j+=(M-j*j)>>31 )"
12
+
13
+ rem %@AAline% x0 x1 y0 y1 < rtn> !$AAline!
14
+ set @AAline = for %% # in (1 2) do if %% #==2 ( for /f " tokens=1-4" %% 1 in (" ^!args^! " ) do (%\n%
15
+ set " $AAline = " %\n%
16
+ set /a " $dx = (((%%~3-%%~1)>>31|1)*(%%~3-%%~1))","$dy = (((%%~4-%%~2)>>31|1)*(%%~4-%%~2))","$x0 = %%~ 1,$y0 = %%~ 2,$x1 = %%~ 3,$y1 = %%~ 4" %\n%
17
+ set /a " $err = $dx- $dy" , " dxdy = $dx+$dy","dist = ^ ! sqrt:n = (%%~ 3-%%~ 1)* (%%~ 3-%%~ 1) + (%%~ 4-%%~ 2)* (%%~ 4-%%~ 2)^ ! " %\n%
18
+ if %% ~1 lss %% ~3 ( set $sx = 1 ) else ( set $sx = -1 )%\n%
19
+ if %% ~2 lss %% ~4 ( set $sy = 1 ) else ( set $sy = -1 )%\n%
20
+ if ^^! dxdy^^! equ 0 ( set $ed = 1 ) else ( set /a " $ed = dist" )%\n%
21
+ for /l %%i in (1,1,^^! dist^^! ) do (%\n%
22
+ set /a " $shade = 255 - (255 * ((($err- $dx+ $dy)>> 31| 1)* ($err- $dx+ $dy)) / $ed^ )" , " e2 = $err, x2 = ^ ! $x0^ ! " , " $2e2 = 2 * e2" %\n%
23
+ set " $AAline = ^ !$AAline^!%\e% [48;2;^ !$shade^! ;^ !$shade^! ;^ !$shade^! m%\e% [^ !$y0^! ;^ !$x0^! H " %\n%
24
+ if ^^! $2e2^^! geq -^^! $dx^^! (%\n%
25
+ set /a " e2dy = e2 + $dy" %\n%
26
+ if ^^! e2dy^^! lss ^^! $ed^^! if ^^! $x0^^! neq ^^! $x1^^! (%\n%
27
+ set /a " $shade = 255 - (255 * (((e2+ $dy)>> 31| 1)* (e2+ $dy)) / $ed)" , " $y0sy = $y0 + $sy" %\n%
28
+ set " $AAline = ^ !$AAline^!%\e% [48;2;^ !$shade^! ;^ !$shade^! ;^ !$shade^! m%\e% [^ !$y0sy^! ;^ !$x0^! H " %\n%
29
+ )%\n%
30
+ set /a " $err -= $dy, $x0 += $sx" %\n%
31
+ )%\n%
32
+ if ^^! $2e2^^! leq ^^! $dy^^! if ^^! $y0^^! neq ^^! $y1^^! (%\n%
33
+ set /a " dxe2 = $dx - e2" %\n%
34
+ if ^^! dxe2^^! lss ^^! $ed^^! (%\n%
35
+ set /a " $shade = 255 - (255 * ((($dx- e2)>> 31| 1)* ($dx- e2)) / $ed)" , " x2sx = x2 + $sx" %\n%
36
+ set " $AAline = ^ !$AAline^!%\e% [48;2;^ !$shade^! ;^ !$shade^! ;^ !$shade^! m%\e% [^ !$y0^! ;^ !x2sx^! H " %\n%
37
+ )%\n%
38
+ set /a " $err += $dx, $y0 += $sy" %\n%
39
+ )%\n%
40
+ )%\n%
41
+ set " $AAline = ^ !$AAline^!%\e% [0m" %\n%
42
+ )) else set args =
43
+
44
+ set x0 = 1
45
+ set y0 = 20
46
+ set x1 = 40
47
+ set y1 = 22
48
+ set e = 3
49
+ set f = 2
50
+ set g = 1
51
+ set h = 3
52
+
53
+
54
+ for /f " tokens=1-4 delims=:.," %%a in (" !time: =0 ! " ) do set /a " t1 = (((1%%a * 60)+ 1%%b )* 60+ 1%%c )* 100+ 1%%d - 36610100"
55
+
56
+ for /l %% # in () do (
57
+
58
+ for /f " tokens=1-4 delims=:.," %%a in (" !time: =0 ! " ) do set /a " t2 = (((1%%a * 60)+ 1%%b )* 60+ 1%%c )* 100+ 1%%d - 36610100, dt = t2- t1"
59
+
60
+ if !dt! gtr 5 (
61
+ set /a " t1 = t2" , " x0+=e,y0+=f,x1+=g,y1 += h"
62
+
63
+ if !x0! leq 1 set /a x0 = 1, e *= - 1
64
+ if !x0! geq 80 set /a x0=80,e *= - 1
65
+ if !y0! leq 1 set /a y0 = 1, f *= - 1
66
+ if !y0! geq 50 set /a y0=50,f *= - 1
67
+ if !x1! leq 1 set /a x1 = 1, g *= - 1
68
+ if !x1! geq 80 set /a x1=80,g *= - 1
69
+ if !y1! leq 1 set /a y1 = 1, h *= - 1
70
+ if !y1! geq 50 set /a y1=50,h *= - 1
71
+
72
+ %@AAline% !x0! !y0! !x1! !y1!
73
+
74
+ echo %\e% [2J!$aaline!
75
+ )
76
+ title !dt!
77
+ )
78
+ pause
79
+ exit
0 commit comments