Ste*_*dow 0 trigonometry batch-file square-root
我正在制作一个工具,用户在整个过程中都会看到这个三角形:
:draw
echo ^|\
echo ^|a\
echo ^| \
echo ^| \
echo ^| \ C
echo A^| \
echo ^| \
echo ^| \
echo ^|c b\
echo ^|---------\
echo B
GOTO:EOF
Run Code Online (Sandbox Code Playgroud)
任何字母都有,有变数.首先,用户选择他们具有的角度值.然后他们选择一个边值.在那之后,所有的值都将被自动填充.在我的源代码中,我只有sin(a)或者类似于占位符的东西,直到我可以在本机批处理中找到trig函数(sin,cos,tan)和squareroot.
您可以使用表(数组真的)将输入值(度)映射到值的sin乘以公共因子,因此您可以使用此类中间结果实现aritmethic操作.例如:
@echo off
setlocal EnableDelayedExpansion
call :DefineSinTable
set st=
For /L %%i in (1,1,52) do set st=#!st!
For /L %%x in (0,4,90) do (
set /a "int_sinx_result=(SIN[%%x]*52)>>16"
call set st_=%%st:~0,-!int_sinx_result!%%
echo/!st_!
)
For /L %%x in (90,-4,0) do (
set /a "int_sinx_result=(SIN[%%x]*52)>>16"
call set st_=%%st:~0,-!int_sinx_result!%%
echo/!st_!
)
goto :EOF
:DefineSinTable
rem Definition of SIN table values (SIN(x)*65535) for 0-360 degrees
rem Antonio Perez Ayala
set Quad1=0
for %%a in ( 1144 2287 3430 4572 5712 6850 7987 9121 10252 11380 12505 13626 14742 15855 16962
18064 19161 20252 21336 22415 23486 24550 25607 26656 27697 28729 29753 30767 31772 32768
33754 34729 35693 36647 37590 38521 39441 40348 41243 42126 42995 43852 44695 45525 46341
47143 47930 48703 49461 50203 50931 51643 52339 53020 53684 54332 54963 55578 56175 56756
57319 57865 58393 58903 59396 59870 60326 60764 61183 61584 61966 62328 62672 62997 63303
63589 63856 64104 64332 64540 64729 64898 65048 65177 65287 65376 65446 65496 65526 65535
) do (
set /A Quad1+=1, Quad2=180-Quad1, Quad3=180+Quad1, Quad4=360-Quad1
set SIN[!Quad1!]=%%a
set SIN[!Quad2!]=%%a
set SIN[!Quad3!]=-%%a
set SIN[!Quad4!]=-%%a
)
for %%a in (0 180 360) do set SIN[%%a]=0
exit /B
Run Code Online (Sandbox Code Playgroud)
您可以使用相同的方法来获取任何其他函数的结果,或者您可以使用迭代方法来计算平方根.
编辑:添加了平方根功能.
@echo off
:SquareRoot number
set /A number=%1, last=2, sqrt=number/last
:nextIter
set /A last=(last+sqrt)/2, sqrt=number/last
if %sqrt% lss %last% goto nextIter
echo %last%
Run Code Online (Sandbox Code Playgroud)
例如:
> SquareRoot.bat 214358881
14641
> SquareRoot.bat 14641
121
> SquareRoot.bat 121
11
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |