用矩阵的概念思考图形界面的解决方案

作者: 徐朝_尼克徐 | 来源:发表于2017-11-26 10:57 被阅读90次

从线性代数和矩阵的角度,我获得一个灵感,是关于如何操作U I界面的。

一, 图形界面的静态部分

1, 将需要显示的每个数据元素,以及相应的U I元素,组成一个对象。例如有n个这样的对象。每个对象有名字,有类型,有绑定到数据库的表的属性,有UI元素的属性等,有显示错误时提示信息的属性等。

2, 把这n个元素,排成n行1列的列向量,放在一个数组里。

3,如果这些元素间有父子关系,则用邻接矩阵的概念,来做一个连接,渲染时也会根据邻接矩阵来渲染。

4,这个列向量,其实也是一个矩阵了,里面的每一个元素,都有若干个属性,即维度。

二, 图形界面的动态部分

1, 对图形界面的所有的动作,实际上都对以上定义的那个列向量的变化,可以简化成对整个列向量的一个操作。

2,如果列向量的UI方面数值变了则更新UI,如果数值方面变了则更新到数据库。

3, 把界面上的状态变化,抽象成状态以及事件驱动下的状态转换,并写出状态转换矩阵,一切界面上的变化应该是被这个矩阵所涵盖。如果有新的需求,将修改这个状态转换矩阵。

以下是一个简单的状态机矩阵

webwxgetmsgimg.png

那么,综上,一个图形界面的解决方案如下:

第一步,定义界面矩阵

把界面上所涉及到的元素及所包含的数据,映射成一个1行n列的向量。该向量其实也就是一个矩阵,因为向量中每个元素有多个维度即属性。

第二步,定义操作符

定义若干操作符,把界面上一切变化,都反映成向量和向量经过某操作符后,被渲染的结果。

第三步,定义状态转换矩阵

如上述,需要定义出来根据事件整个界面如何变化的状态转换矩阵。

第四步,定义状态转换时所做动作

用矩阵运算的形式,来写出状态转换时所做的操作。

原则上,定义了以上两个矩阵和若干操作符,和相应矩阵操作后,这个界面的编程就告结束。

用矩阵化思维考虑UI问题时,有以下几个特征:

1, 整体化考虑,把整个界面看作整体。

2, 抽象化,一切看作向量,一切UI表现和数据表现,都是向量的呈现。

3, 界面的一切变化,都是向量变换,向量之间通过定义好的操作符的运算,转换成了新的向量并被渲染到界面上。一切以前“鸡零狗碎”的UI场景,都应该能归一到此。

用矩阵的概念想UI问题,其实是受到机器学习科目的影响。矩阵化思维减轻了思维负担。使我想起,学到解析几何后,那种通过数字机械操作就能证明出传统几何学难题的快感。

以上是一个理想化的考虑。具体如何,需实验后才知。

相关文章

  • 用矩阵的概念思考图形界面的解决方案

    从线性代数和矩阵的角度,我获得一个灵感,是关于如何操作U I界面的。 一, 图形界面的静态部分 1, 将需要显示的...

  • 线性代数

    数的概念: 标量,向量,矩阵,张量 矩阵概念: 转置,矩阵相乘,矩阵交换律,结合律,点积,单位矩阵,逆矩阵...

  • 矩阵

    一.矩阵概念的一些背景 略 矩阵相等的概念:同型且对应值相等。 单位矩阵 零矩阵 方正 上(下)三角矩阵 对角矩阵...

  • 用新的概念思考

    概念是逻辑推理的起点,也是追究事实真相的思维工具,更是新鲜理论的生长点。不同的概念代表着思维和逻辑水平的高低。 ...

  • MIT 线性代数 6.列空间和零空间

    列空间 根据列空间的概念,我们可以更深入的了解关于的问题这里还是假设矩阵A= 原矩阵方程可以写成此时我们思考一个问...

  • 1、矩阵的概念及运算

    一、什么是矩阵 矩阵的概念 特殊矩阵 零矩阵 行矩阵 列矩阵 方阵 对角阵(对角阵、纯量矩阵、单位矩阵 ) 三角...

  • 3吴恩达Meachine-Learing之线性代数回顾 (Lin

    本文主要讨论神魔是矩阵和向量,谈谈如何加减乘矩阵及向量,讨论逆矩阵和转置矩阵的概念!!如果十分熟悉这些概念,可以很...

  • 伪逆矩阵(广义逆矩阵)

    Inverse Matrix(逆矩阵)& Pseudoinverse Matrix(伪逆矩阵/广义逆矩阵)概念 伪...

  • 逆矩阵 列空间 零向量

    我们同样可以用矩阵变换理解它,即x通过变化移动到可以覆盖v的位置 这里我们引入逆矩阵的概念,即空间变换的逆变换。 ...

  • 3 线性回归回顾(Linear Algebra review(o

    3.1 矩阵和向量(Matrices and vectors) 本节课主要介绍的是矩阵和向量的概念。 矩阵(Mat...

网友评论

    本文标题:用矩阵的概念思考图形界面的解决方案

    本文链接:https://www.haomeiwen.com/subject/zakkbxtx.html