本帖最后由 aa77dd@163.com 于 2015-7-14 15:42 编辑
近似算法, 以下是迭代上限 MaxRepeats 设为 30 次得到的图像- # #
- #
- #
- #
- ###
- ## #####
- ########
- #########
- #########
- #########
- ########
- # # #######
- # ## ############## ### #
- ### #################### #
- #### ##################### # # ##
- ##################################
- #################################
- ################################
- # # ################################
- # ###################################
- ######################################
- #####################################
- # #####################################
- # ###########################################
- # ########################################
- ### ########################################
- ## ####### #########################################
- ############ #########################################
- ############# ##########################################
- ################# ##########################################
- ################# ##########################################
- ##############################################################
- # ###########################################################
- ################################################################
- ###############################################################
- ## ##################################################################
- ##################################################################################
- ## ##################################################################
- ###############################################################
- ################################################################
- # ###########################################################
- ##############################################################
- ################# ##########################################
- ################# ##########################################
- ############# ##########################################
- ############ #########################################
- ## ####### #########################################
- ### ########################################
- # ########################################
- # ###########################################
- # #####################################
- #####################################
- ######################################
- # ###################################
- # # ################################
- ################################
- #################################
- ##################################
- #### ##################### # # ##
- ### #################### #
- # ## ############## ### #
- # # #######
- ########
- #########
- #########
- #########
- ########
- ## #####
- ###
- #
- #
- #
复制代码 如果将 MaxRepeats 的值设小一些, 耗时会减短, 但结果的近似程度相应会更差- @echo off & setlocal enabledelayedexpansion & color f0 & chcp 437 & title Mandelbrot set
- rem 将控制台字体设置为 点阵 8X8 查看效果比较好
-
- set "DOT=#"
- set /a "MaxRepeats = 30"
- set /a "ratio=36, EscapeSQ=ratio*ratio*2*2+1, wid=ratio*3, Cols=wid, lines=ratio*2+1, iMax=wid*(lines-1)"
- set /a "XC = Cols*2/3, YC = lines/2"
- set /a "xl=ratio*-2, xh=ratio-1, yl=-ratio+1, yh=ratio"
- mode !Cols!, !lines!
-
- for /l %%i in (1 1 !iMax!) do set "scr= !scr!"
-
- for /l %%a in (!xl! 1 !xh!) do for /l %%b in (!yl! 1 !yh!) do call :Mandelbrot %%a %%b
- cls &(<nul set /p=!scr:~0,-1!)
- >nul pause
- exit
-
-
- :Mandelbrot a b rem c = a + bi
- title %1,%2
- set /a "repeats=za=zb=0" & rem z = za + zbi
-
- :loop
- REM z = z^2 + c
- set /a "ta = za, za = (za*za - zb*zb) / ratio + %1, zb = 2 * ta * zb / ratio + %2"
- set /a "repeats += 1"
- set /a "SQ = za*za + zb*zb, t = SQ - EscapeSQ & repeats - MaxRepeats"
- if !t! lss 0 goto :loop
-
- if !repeats! geq %MaxRepeats% (
- set /a "x= XC + %1, y= YC - %2"
- set /a "ind=x+y*wid+1, lenL=ind-1, lenR=iMax-ind"
- for /f "tokens=1,2,3" %%a in ("!lenL! !ind! !lenR!") do (set scr=!scr:~0,%%a!%DOT%!scr:~%%b,%%c!)
- cls &(<nul set /p=!scr:~0,-1!)
- )
- exit /b
复制代码
|