zoukankan      html  css  js  c++  java
  • Alg-4:算法可视化tiny库的实现

    好吧,准备好好实践一下《算法》这本书的内容的,有点讨厌的是这本书是以Java作为示例语言的(好吧,我承认我有语言偏见,Java就是臭)。其中有一个Std库,其中涉及到简化输入输出、随机数生成、算法可视化的内容。里面的大部分功能在Python中早就是标配了~~~。唯独有一个用于算法可视化的StdDraw类Python没有build-in包。扩展包到时有很多(如Matplotlib),但是只是要和书本同步那几个小功能,没必要杀鸡用牛刀。就想着用Python自带的Tk实现以下。

    主要目标如下:

    • 完成和书本中的StdDraw一样的API接口
    • 要有个简单的GUI窗口用于图像的显示和保存

    技术选择:

    由于GUI操作很少,所以采用python自带的Tk GUI库,结合图像处理主要下面三种组合

    1.纯Tk canvas (依赖少,Python发行版完全自带)
    2.Tk + PIL (需小型扩展PIL/pillow)
    3.Tk + maplotlib (需要一个大的扩展包)

    现在采用的是第二种方案,原因是方便处理图片格式。但是这种方案目前有些问题:

    • Tk本身的颜色、字体设置和PIL是不同的
    • PIL本身是进行图像处理的,不方便进行坐标的转换及坐标范围的缩放
    • Tk和PIL进行交互时有点阻碍,不能很好的进行扩充

    计划下一步先将Tk+PIL这种方案的实现好,接着采用第一种方案完全实现Java的接口(包括其中的动态显示)

    目前的成果

    • GUI界面,logo水印,基础图形绘制以及Text呈现:



    • 无序列表可视化

    • 有序列表可视化

    Github Update

  • 相关阅读:
    汇编指令:ldr和str,ldm和stm的区别
    面向对象(成员(变量,方法,属性)组合并嵌套)
    面向对象三大特性编写面向对象程序,self到底是谁
    内置函数二. 递归 二分法
    内置函数
    生成器;三元表达式, 推导式
    函数名的应用,闭包,迭代器
    函数的进阶
    闭包,迭代器
    函数
  • 原文地址:https://www.cnblogs.com/taceywong/p/5876558.html
Copyright © 2011-2022 走看看