0.7.2 • Published 4 years ago
algomotion v0.7.2
AlgoMotion
用于算法可视化的轻量级Canvas绘制工具
Install
npm i algomotionDemo
API
General
配置项
Set
名称 含义(涉及数字,单位均为px) 默认值 heightCanvas高度250 widthCanvas宽度800 blockMaxSize数字块(最大)边长(圆形直径) 50 emphasisColor强调块背景色 #bedce3 emphasisTextColor强调块字体颜色 #1c474d textColor普通块字体颜色 #eefcf5 fillColor普通块背景色 #14cdc8 barrierColorBarrier的颜色red font数字大小 20 hidpiHiDPI支持 true fps动画帧率 60 speed动画执行速度 1.0 motion是否使用 movesReader读取mvs中的操作步骤false postion启用 motion时,绑定mvs执行的进度undefined staticTime定义一些静止动作的持续时间(如强调、空白动作等)(单位为浩渺) 800
position使用方法:
Vuelet value = ref(0); let set = { position: [value] }
- 普通
JS请查看Demo源码,postion会在控制台打印。
info
名称 含义 dta放置数据 mvs放置操作步骤
方法
| 名称 | 作用 |
|---|---|
init(set,info,canvas) | 初始化函数 |
destory() | 析构函数 |
pause(boolean) | 控制暂停继续动画 |
setMovesReader(func) | 设定mvs处理器,处理器为一个函数,默认详见:默认MovesReader。 |
setPosition(idx) | 控制关键帧的位置 |
clear() | 清除所有的强调状态和标记 |
Array
配置项
set
名称 含义(涉及数字,单位均为px) 默认值 maxGap块最大间隔 25 blockRadius块圆角半径 5 motionOffset动画的上下偏移范围 50
方法
| 名称 | 作用 |
|---|---|
swapBlock(idx1,idx2) | 提供index,展示交换动画 |
emphasizeBlock(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示 |
addBarrier(arr) | 提供一个数组,数组内为index,用于在对应块之前放置分隔标记(兼容旧参数:仅一个数字) |
removeBarrier(arr) | 提供一个数组,数组内为index,用于在对应块之前删除分隔标记(兼容旧参数:仅一个数字) |
addBlock(idx,num) | 添加一个新数字块 |
removeBlock(idx) | 删除一个数字块 |
Tree
配置项
Set
名称 含义(涉及数字,单位均为px) 默认值 maxLayerHeight树每一层的最大高度 70 emphasisLineColor强调连线颜色 #1c474d 另外,树枝的颜色为
fillColor,交换(swap)时会变为emphasisTextColor。Info
树结点的索引,是其在完美二叉树中的位置,从0开始。
方法
| 名称 | 作用 |
|---|---|
swapNode(idx1,idx2) | 提供index,展示交换动画 |
emphasizeNode(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示 |
addNode(idx,num) | 添加一个新结点 |
removeNode(idx) | 删除一个结点 |
Graph
基于较为原始的力引导布局的无向图。
配置项
Set
名称 含义(涉及数字,单位均为px) 默认值 blockSize每个结点的大小(替代原 blockMaxSize)40 emphasisLineColor强调连线颜色 #1c474d Info
名称 含义 rel放置关系矩阵(二维)建议仅填充上三角
方法
| 名称 | 作用 |
|---|---|
emphasizeNode(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示结点 |
emphasizeLink(idx1, idx2, boolean) | 提供index和一个布尔值,用于切换是否强调展示边 |
关于默认的MovesReader
Array支持的
mvs格式(8种):get(index),swap(index1,index2),add(idx,number),remove(index),barrier(arr),unbarrier(arr),clear(),blank()其中:
get(index)为高亮一次第index个元素barrier(arr)在第index个元素前添加标记,即Demo中的AddBarrier,可以传递多个参数作为index,如barrier(1,2)unbarrier(arr)用法同上,但是用以删除标记clear()为清除所有barrier标记blank()为什么都不做,等待一次,用于配合其他动作
Tree支持的
mvs格式(5种):get(index),swap(index1,index2),insert(index,number),remove(index),blank()其中:
index为结点在完全二叉树中的位置blank()为什么都不做,等待一次,用于配合其他动作
Graph支持的
mvs格式(6种):emp(index),unemp(index),link(index1,index2),unlink(index1,index2),clear(),blank()其中:
emp/unemp为切换结点的强调展示状态link/unlink为切换边的强调展示状态blank()为什么都不做,等待一次,用于配合其他动作