识别图元(Queue)

原创 2005年04月24日 20:40:00

void Label()
{
 //初始化围墙
 for(int i=0;i<=m+1;i++)
 {
  pixel[0][i]=pixel[m+1][i]=0;
  pixel[i][0]=pixel[i][m+1]=0;
 }

 // 初始化offset
 Position offset[4];
 offset[0].row=0; offset[0].col=1; // 右
 offset[1].row=1; offset[1].col=0; //下
 offset[2].row=0; offset[2].col=-1; //左
 offset[3].row=-1; offset[3].col=0; //上

 int NumofNbrs=4;
 LinkedQueue<Position> Q;
 int id=1;
 Position here, nbr;

 //扫描所有象素
 for(int r=1; r<=m; r++)
  for(int c=1;c<=m; c++)
  {
   if(pixel[r][c]==1)// 新图元
   {
    pixel[r][c]==++id;
    here.row=r;
    here.col=c;
   }

   // 寻找其余图元
   do  
   {
    for(int i=0; i<NumofNbrs; i++)
    {
     //检查当前象素的所有相邻象素
     nbr.row=here.row+offset[i].row;
     nbr.col=here.row+offset[i].col;
     if(pixel[nbr.row][nbr.col]==1)
     {
      pixel[nbr.row][nbr.col]=id;
      Q.Add(nbr);
     }
    }
    // 还有未探索的象素吗?
    if(Q.IsEmpty())
     break;
    Q.Delete(here);
   }while(1);
  }
}

Ref:<<数据结构,算法与应用>>P204~206

队列应用:识别图元

问题描述给出一个m×\times m的矩阵,’0’表示图形背景,’1’表示图元的一个点。我们的任务是将矩阵中连成一片的’1’(图元)标记出来。解决方案利用队列来实现。按顺序遍历矩阵的每一个点。如果该点...

计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别

术语退化多边形(degenerate polygon)常用来描述共线或重叠坐标位置的顶点集。共线顶点生成一线段。重叠顶点位置可以生成有多余线段、重叠边或长度为0的边的多边形。有时术语退化多边形也用于少...

Chapter 3 基本图元算法

  • 2014年11月23日 09:30
  • 1.53MB
  • 下载

计算机图形学三角形图元变换

  • 2015年11月04日 21:46
  • 4KB
  • 下载

Qt图形视图框架二--图元创建

Qt图形视图框架 Graphics View 图元创建

图元电脑行业管理软件

  • 2014年06月25日 21:58
  • 7.6MB
  • 下载

游戏开发学习笔记-3.基本图元绘制

  • 2015年06月11日 11:09
  • 2.15MB
  • 下载

计算机图形学(三)_图元的属性_2_颜色和灰度

最左边一位控制红枪,中间位控制绿枪,而最右边的一位控制蓝枪。在帧缓存中增加一些位可增加可选择的颜色数量。每像素有6位时,每支枪可用2位来控制。这可使三支颜色枪的每支得到4个不同强度的控制,而使每个屏幕...

mapx添加图元速度测试

  • 2009年07月21日 07:49
  • 2.22MB
  • 下载

地图指定经纬度图元显示功能

  • 2012年04月29日 21:09
  • 2.58MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:识别图元(Queue)
举报原因:
原因补充:

(最多只允许输入30个字)