Skip to content

Commit be510d1

Browse files
Add files via upload
1 parent f299c50 commit be510d1

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

anti-alias_Line/AAline.bat

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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

Comments
 (0)