马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
前言
以矩阵图范例和像素图范例作为图像类数据的根本,但在利用过程中有个标题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析.
引入
原帖数据类操持_图片类操持之7_矩阵图形类操持更新_实战之页面简单操持(前端架构)-CSDN博客里有对矩阵图形类的界说如下:
- //更新后的矩阵类定义
- struct Matrix : public Reg_pic {
- short length; //表示长度的点个数
- short height; //表示高度的点个数
- short red;
- short green;
- short blue;
- vector<vector<Reg_point>> matrix; //图,点的二维数组
- vector<Matrix> inner_matrix; //更新时添加的属性,表示内部矩阵
- Matrix(short Length, short Height, short Red,
- short Green, short Blue) //构造函数
- {
- vector<Reg_point> tmp; //临时容器
- for (short i = 0; i < height; i++)
- for (short j = 0; j < length; j++)
- {
- tmp.push_back(Reg_point{ Red,Green,Blue });
- }
- matrix.push_back(tmp); //临时容器内容添加到矩阵对象
- }
- };
复制代码 而点的范例界说在数据类操持_图片类操持之1_矩阵类操持(前端架构根本)-CSDN博客
- //规则点类
- struct Reg_point{
- short red;
- short green;
- short blue;
- }
复制代码 像素图和像素点界说如下:
- //自由图形类(像素图)定义
- struct Pixel_pic{
- vector<Pixel_point> pps; //像素点集合
- }
-
- //像素点类型定义
- struct Pixel_point{
- short x_cord;
- short y_cord;
- short red;
- short green;
- short blue;
- }
复制代码 复习数据的泉源与访问
数据的泉源
"数据=数据范例+参数"----通常环境下数据分三步得来:界说数据范例,给出参数,得到数据.
数据的访问
数据的访问有两种情势:
1.数据名大概指向数据对象的指针;
2.数据聚集与查找算法---当把数据用某种数据布局放入数据集适时,由指向数据聚集首元素的指针和界说的查找算法来访问数据
矩阵类图形范例分析
1.矩阵类对象的构造函数,符合数据泉源的写法.
- //矩阵类构造函数
- Matrix(short Length, short Height, short Red,short Green, short Blue)
复制代码 他表现创建一个长Length,宽Height,颜色分别为Red,Green,Blue的纯色矩阵对象.
这种环境下,Length和Height是核心属性,他们直接决定了数据对象的构成.也可以看作是一种"主动"的属性.
2.矩阵类对象由vector动态天生.
由于Matrix对象是由二维数组的点所构成,在背面的矩阵混淆算法中,都是接纳push_back()添加进对象的,以是此时的长和高,接纳vector方法求出来.这是一种被动天生数据的写法.
于是可以给三个函数,分别为showSize();getLength()和getHeight();表现盘算尺寸,得到长度和高度.
- //更新后的矩阵类定义
- struct Matrix : public Reg_pic {
- short length; //表示长度的点个数
- short height; //表示高度的点个数
- short red;
- short green;
- short blue;
- vector<vector<Reg_point>> matrix; //图,点的二维数组
- vector<Matrix> inner_matrix; //更新时添加的属性,表示内部矩阵
- Matrix(short Length, short Height, short Red,
- short Green, short Blue) //构造函数
- {
- vector<Reg_point> tmp; //临时容器
- for (short i = 0; i < height; i++)
- for (short j = 0; j < length; j++)
- {
- tmp.push_back(Reg_point{ Red,Green,Blue });
- }
- matrix.push_back(tmp); //临时容器内容添加到矩阵对象
- }
- //以下至末尾为新添加代码
- void showSize(){ //计算尺寸
- height=matrix.size(); //计算高度
- auto mxd=matrix.begin(); //得到指向矩阵第一行的指针
- length=(*mxd).size(); //取得这一行,得到其长度
- }
- short getLength(){ //get长度
- return length;
- }
- short getHeight(){ //get高度
- return height;
- }
-
- };
复制代码 注意:被动天生数据的时间,核心属性是vector<vector<Reg_point>> matrix;
像素图形类分析
和矩阵数据类对象的第二种环境类似,他也是一种被动天生的数据.
- //自由图形类(像素图)定义
- struct Pixel_pic{
- vector<Pixel_point> pps; //像素点集合
- //以下为新增代码
- short getLength(){ //获得长度,最大x坐标
- short max=0;
- for(auto ppsd=pps.begin();ppsd!=pps.end();ppsd++){
- if(max<(*ppsd).x_cord){
- max=(*ppsd).x_cord;
- }
- }
- return max;
- }
- short getHeight(){ //获得高度,最大y坐标
- short max=0;
- for(auto ppsd=pps.begin();ppsd!=pps.end();ppsd++){
- if(max<(*ppsd).y_cord){
- max=(*ppsd).y_cord;
- }
- }
- return max;
- }
- }
-
复制代码 getLength()和getHeight();表现得到长度和高度
至此两种图形范例长和高的标题办理了.如果其他代码中必要用到这两个属性,可以表达出来.笔者就不更新之前的代码了.
回顾
实质上是对vector这种数据布局的熟悉,在C/C++界说的动态数组中,表现数据聚集内元素个数的数字,也是一种被动的存在.
小结
除了上一帖引入了核心属性,这里由于vector的特殊性子,又引入了被动属性这个概念.
别的,编程重在明白(明白的重点照旧数据---数据是步调中的重中之重),只要有富足的明白,代码不管是横着写竖着写,正着写反着写,都能写得出来,共勉.
|