Board logo

标题: 输出方程曲线图 [打印本页]

作者: qwd     时间: 2011-1-3 19:44    标题: 输出方程曲线图

@echo off&setlocal enabledelayedexpansion&title 曲线方程图-趣味东QQ:309254515制作
set r=5
:fs  :::排列方程表达式:::
for %%f in (
!添加曲线方程:仅此for内 乘号.替代* !

圆:x.x/4+y.y-r.r
双:x.x/2-y.y-r.r
抛:x.x-r.y.2    , x.x+r.y.2  , y.y+r.x/2  ,  y.y-r.x/2  ,
   x.x-y.y                     y.y+r.x                  
         
) do (
set fc=%%f&set fc=!fc:.=*!
echo  fc=!fc!
set fc=!fc:*:=!
call:zb
)

::::对话输入部分::::
echo [输入方程] [圆半径或值域] [单图:回车0符号] [全方程:-1] [全图:字母除x,y^>30]
set fc=x*x/4+y*y-r*r
:fc
echo 列:!fc! !r!
set/p f=
echo !f!|findstr /i "x y">nul&&(set fc=!f!)||(
if !f! equ -1 set r=-1&goto fs
if !f! gtr 0 if !f! leq 30 (set r=!f!) else (goto fs)
)
call:zb !fc! !r!
goto fc


:::::建立坐标系处理方程图:::::::
:zb
if not "%1" =="" set fc=%1& set r=%2
if not "%3" =="" set %3=&goto fs&ext/b
for /l %%y in (!r!     -1  -!r!) do (set/a"y=%%y ,r'=r*2,min=~(1<<31),t=r"
   for /l %%x in ( -!r'!   1  !r'!) do (set/a"x=%%x",双引号不能分行或在行首位,^

    输出方程线, c=!fc!                      ,^

    c="(c>>31|1)*c",1"/(c-min+1>>31)"2>nul,min=c,".=(r'+x)%%(r'+1)"
    set/a"1/(^!(y-r)*(x&1))"2>nul&&set str=!str! )

if !min! leq !r'! call echo.^
%%str:~,!.!%%*%%str:~!.!%%%%str:~!.!%%*
)
set str=&echo.
exit/b
附件 1: 未命名.gif (2011-1-3 19:44, 22.9 K)



作者: acaigg     时间: 2011-1-4 11:14
学习一下。
作者: qwd     时间: 2011-1-5 00:17
自己顶下!
发挥你的想象 不同表达式有不同曲线输出的!请多多发图效!
作者: qwd     时间: 2011-1-5 21:29
这个大家没兴趣玩吗!还以为看贴多的给点建议,比如左右单边抛物线上还未处理都是对称显示出来的!
作者: x1x1h     时间: 2016-11-19 11:23
我感觉很好玩,但是还需要在优化一下下,就更好啦,顶一下。
作者: niudd     时间: 2017-2-28 11:27
新手表示比较复杂