前言
不管是学习,还是创造,都得反复总结,得到解决某个或者某类问题的一般方法,那么下次遇到同样的问题就是信手拈来.
图片类对象的抽象含义
其实就一句话:怎样把一个数据静止放到一个场景中.
把图片类对象的范围放宽,同样适用.数据对象可能是字符,一段音乐,一段话,按照前面的定义:计算机世界的一种客观存在,都可以被视作数据.当然字符,音乐或者一段话会被写入对应硬件中.
程序结构
以下是笔者理解的程序结构
这里引入了几个概念:元素,组件,场景和硬件.
元素
开始时数据还只有一个类型,当生成了数据对象或者数据文件中找到一堆点(寄存器),他还尚未能被使用.此时需要定义接口类或者接口函数来进行转换.如前所述,笔者定义了接口函数,如果定义接口类,也是差不多的写法.最主要的是要理解:场景内的元素和数据对象差别在哪里?很明显,在图片类对象转换成场景元素时,需要加上他的位置.因此接口类可以这样写:
//矩阵在场景xscene中
struct Matrix_in_xscene{
int x_cord; //x坐标,等同混合函数中的x_ref
int y_cord; //y坐标,等同混合函数中的y_ref
Matrix_in_xscene(Matrix& data,Matrix& xscene); //构造函数
//算法和混合函数相同,场景xscene等同out_matrix,其中对应数据有改变
}
数据类型不一样,接口类分开定义.当然也不是绝对的,根据情况而定.分开定义是考虑每种数据类型采用的算法可能有区别.
组件
组件由元素混合而成,混合前打了问号❓,有时候元素不需要混合,本身就是组件,例如上一篇帖子中的字符3.
场景和硬件
场景可能不止一个,有多个场景.场景之间可以映射数据.能把数据写入硬件的场景叫主场景(笔者自己命名).其他场景把数据写入主场景.
好消息:场景和硬件都是矩阵类Matrix对象.
笔者估计所有的程序结构都差不多,从这里可以简单区分程序的三层结构:数据,逻辑和场景.数据写入硬件比较简单,不归于程序结构中.只是静态页面的话,逻辑只有一条怎么把数据写到场景中,在接口类里面就定义好了,所以看起来挺简单.
复杂的程序牵涉的逻辑比较多的话,或许有四五六多层结构,但基本上差别也不大,因为层与层之间相互独立,只解决数据传送问题就可以了.朋友相信你自己,下次应聘时考官问你想要什么职位,你说架构师(*^_^*)
一些展望
只是做图片的话,网页端基本上就是20年前的样子,不够生动.从做图片这件事可以向前延展.
1.动画
动画是二维图片在时间维度上的延伸.
动画=图片+延时.动画基础在以后将做一点讨论
2.3D造型
3D造型是二维图片在空间维度上的延伸.
二维图片中的矩阵是点的二维数组,空间矩阵是点的三维数组.计算量大了很多,但效果也好了许多,而且现在电脑硬件方面不担心性能.
3.游戏
能做动画,能做3D,当然在游戏开发方面不会有大的问题了.
4.C++
听人讲C++在桌面端天然有优势,发展历史那些框架支持就不讲了.根据自己感觉,C/C++是和数据直接打交道的语言,效率比较高.正是因为直接面向数据,所以常说的引擎开发,做个PS软件,或者3D造型软件,Qt是完全用C++开发的,是标准C++支持的类库.
5.职业
笔者估摸着架构师掌握程序结构,以及一些关键代码,此外算法工程师应纳入考虑之列.像一些不太难的图形造型,程序员应该自己写而不要去找算法工程师
6.面向对象
面向过程可以解决一切问题,但在规划程序的时候不太好办.面向对象有着一定优势,至少知道解决问题,要找一个"对象".没有现成的对象,就自己写一个.
后记
图片类设计小小告一段落,尽管还有许多不完善的地方,但目的也不是说要自己开发个PS软件什么的,主要是编程思路的开拓.