数据类设计_图片类设计总结(常更新)

前言

        对笔者个人而言,近段时间来对图片类设计的探讨有里程碑式的意义.对代码和代码中的思路,反复思考总结,希望能举一反三,得到能力的提高.

引入

         从各个层面,多个角度去想,不限范围,经常更新.

关于算法

        单单从功能上来看,就做了几个框,连个圆都没写.所以目前做个简单网页也就只能做个方方正正的简单界面.不过也可以这样想:不要html,也不要其他框架,这就是框架

        对前端而言,真正的考验并没有来.那就是各种复杂图形的算法.笔者在网上搜了"各种曲线方程",跳出来一堆公式.要做这些图,需要解方程式再做成接口放进软件里,这就是需要数学的地方了.解方程的结果表示在计算机中可能又需要其他模块支持.----这还是属于计算机图形学的范畴了.如果专业的制图软件,是需要这些内容的.这也算是一个方向,有兴趣的可以走,其实也不是很难,就是把公式换成数据对象,不需要程序员自己设计一种以其名字命名的图形.

        矩阵和圆角矩阵算最简单最规则的图形了.像素图只是个大的概念,没有具体的表现.所以实质上的东西并不多,然而就这么点东西还让人(笔者)一时头大.感觉要写程序的话,要么天赋好,要么有死磕的态度去对待.

        前端难还是后端难?笔者看了网上的介绍,简单理解,前端就是界面,后端就是数据库,不知道这样理解行不行?反正都是数据,都是指针,这样想会不会好一点.所以没什么好纠结的.前端能被看见

代码思路

代码基本思路

        当什么情况出现时,将发生什么事

        1)出现的情况---表示"因",将有哪些数据表示"因"

        2)将发生的事---表示"果",将有哪些数据的改变表示"果"

        这里的因和果,和代码里的"分支","循环"有联系也有区别,他表示一种预设的逻辑,一种在程序员看来必然的联系,而分支和循环是在预设逻辑上的一种选择.

        指针

        单独列出指针,作为代码基本思路中的一环,因为不管在哪个环节,指针的使用都是非常频繁的.

        1)凡是超过字节单元长度的数据,都由指针表示.类型定义直到出现字长单元为止.

         2)指向数据集合的指针,厘清数据元素的类型.

         举例:指向矩阵类图形对象的指针,理解为"指向行集合的指针".这样做的目的是理解比较复杂的数据.不管数据有多复杂,其类型里面包含了什么类型,什么数据集合,每次只访问当前层(一层数据).

//矩阵图形类部分定义
//伪代码
struct Matrix : public Reg_pic {
    vector<vector<Reg_point>> matrix;         //图,点的二维数组
    void fun(){                               //函数
        for(auto mxd=matrix.begin();mxd!=matrix.end();mxd++)
            //*mxd表示一行,行是点的集合,所以可以继续遍历,*mxdd表示一个点
            for(auto mxdd=(*mxd).begin();mxdd!=(*mxd).end();mxdd++){
                
                ......(内容)
            }
    }
};

代码具体问题

       1>增加一点内容

       例如: 在快捷方式类型设计中,加入了已有对象"箭头",如果想再加点东西,例如一朵花(图片来源某度)

                                

         很自然想到做一个类来继承Shortcut类,在基类的构造方法上增加内容.

          2>对象方法还是单独的方法?

        矩阵混合算法是单独函数写的,像素图混合是用工具类方法写的.他们能不能写成对象方法?

        不管怎么写效果都是一样的.考虑矩阵类对象可能有多层,所以个人感觉用工具类方法恰当一点

计划文案

        不管做什么事情,先把想法写下来(写到纸上或者电脑文件里),是个不错的做法.大到计划有计划的文案,小到一段代码也有代码的说明.

思维模式

        应该怎样思考,才可以把问题解决?

        以前笔者感觉,,如果不是聪明人,不会去想这些问题.但是没有好的思维方式,基本上也不会有什么创造力.那么问题来了,事情摆在面前无可退缩,现在就需要你这个"笨人"去做聪明人做的事,又该怎么办呢?答案是和别人学啊,学不到就靠自己想.

        推导,总结和升华

         推导:从已知到未知---正向推导;从结果到条件---逆向推导.

         总结:从已成功例子中抽取关键词,形成必然的逻辑(他的形式可能是一段话或一张图)

         升华:在总结基础上再发现更普遍的规律.

         人到底天赋有多高,看得是这些方面的造诣.也不能说是"造诣",这是与生俱来的一种本领,是天才与凡人的区别.个人感觉资质普通的人,面对天赋高的人,终生难以望其项背.像笔者能发现到这个架构就算不错了.当然也不要妄自菲薄,你也可以对自己说,我就是天才(*^_^*)

        所以思维模式没什么好说的,只能靠自己去悟.只有一点:在推导层面,如果推不出来,可以把推导的过程细分.

图片类的深层意义

        站在一个更加抽象的角度,也就是上面的"升华",图片类代表"静止形态的数据".这样做的目的是为了在以后更广阔的应用中,把动画视为静止数据在时间上的叠加.

        数据和场景

         给数据一个假设:所有的数据存在于场景中 

         类似于C++中的命名空间namespace掌管类型和数据,以及函数.数据生成于默认场景,且每个数据都存在于某个场景中.这样做的目的是为了方便搭建程序.

        

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重庆彭枫

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值