找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22608|回复: 1

[特效代码] 分形图:希尔伯特曲线(Hilbert curve)

[复制链接]
发表于 2017-5-2 02:17:16 | 显示全部楼层 |阅读模式
本帖最后由 a20150604 于 2017-5-2 02:28 编辑

  1. @echo off & setlocal enableDelayedExpansion

  2. REM 方向运算
  3. set "D=y+=bw2" & set "U=y-=bw2" & set "L=x-=bw2" & set "R=x+=bw2"

  4. for /L %%T in (1 1 6) do (
  5.     REM 向量总长: 4 * ( 1<<(iterations-1)*2 ) - 1
  6.     REM set /a "iterations=4, basewid=6, bw2=basewid*2, hei=wid=basewid*4*(1<<iterations-1), x=xs=wid*1/(4*(1<<iterations-1)), y=ys=wid-xs, imax = 4 * ( 1<<(iterations-1)*2 ) - 1 - 1"
  7.     set /a "hei=wid=256*2, iterations=%%T"
  8.     set /a "basewid=wid/(4*(1<<iterations-1)), bw2=basewid*2, x=xs=wid*1/(4*(1<<iterations-1)), y=ys=wid-xs, imax = 4 * ( 1<<(iterations-1)*2 ) - 1 - 1"

  9.     set "C="
  10.     set "R_C="

  11.     echo;C=!C!
  12.     echo;R_C=!R_C!

  13.     for /L %%i in (1 1 !iterations!) do (

  14.         set "CW=!C!"
  15.         set "AC=!C!"

  16.         set "R_CW=!R_C!"
  17.         set "R_AC=!R_C!"

  18.         if "!C!" neq "" (

  19.             REM 顺旋:
  20.             REM R->T, U->R, L->U, D->L, T->D
  21.             set "CW=!CW:R=T!"
  22.             set "CW=!CW:U=R!"
  23.             set "CW=!CW:L=U!"
  24.             set "CW=!CW:D=L!"
  25.             set "CW=!CW:T=D!"

  26.             REM 逆旋:
  27.             REM L->T, U->L, R->U, D->R, T->D
  28.             set "AC=!AC:L=T!"
  29.             set "AC=!AC:U=L!"
  30.             set "AC=!AC:R=U!"
  31.             set "AC=!AC:D=R!"
  32.             set "AC=!AC:T=D!"


  33.             REM 顺旋:
  34.             REM R->T, U->R, L->U, D->L, T->D
  35.             set "R_CW=!R_CW:R=T!"
  36.             set "R_CW=!R_CW:U=R!"
  37.             set "R_CW=!R_CW:L=U!"
  38.             set "R_CW=!R_CW:D=L!"
  39.             set "R_CW=!R_CW:T=D!"

  40.             REM 逆旋:
  41.             REM L->T, U->L, R->U, D->R, T->D
  42.             set "R_AC=!R_AC:L=T!"
  43.             set "R_AC=!R_AC:U=L!"
  44.             set "R_AC=!R_AC:R=U!"
  45.             set "R_AC=!R_AC:D=R!"
  46.             set "R_AC=!R_AC:T=D!"
  47.         )

  48.         set "C=!R_CW!U!C!R!C!D!R_AC!"

  49.         REM 逆时针90度正行 + 上 + 逆行 + 左 + 逆行 + 下 + 顺时针90度正行
  50.         set "R_C=!AC!U!R_C!L!R_C!D!CW!"

  51.         echo;C=!C!
  52.     )

  53.     <nul >Hilbert_curve%%T.htm (
  54.         echo;^<svg height="!hei!" width="!wid!"^>
  55.                 set /p "=<polyline points=""
  56.                 set /p "=!x!,!y! "
  57.                 for /L %%i in (0 1 !imax!) do (
  58.                     for %%m in ("!C:~%%i,1!") do (
  59.                         set /a "!%%~m!"
  60.                         set /p "=!x!,!y! "
  61.                     )
  62.                 )
  63.                 echo;"
  64.                 set /p "=style="fill:none;stroke:red;stroke-width:1"/>"
  65.                 echo;Sorry, your browser does not support inline SVG.
  66.         echo;^</svg^>
  67.     )

  68.     start "" Hilbert_curve%%T.htm

  69. )

  70. title any key to exit...
  71. >nul pause

  72. exit /b

复制代码

评分

参与人数 1技术 +1 收起 理由
老刘1号 + 1 666

查看全部评分

发表于 2017-5-2 02:30:47 | 显示全部楼层
你直接写HTML不好吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:02 , Processed in 0.017595 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表