边界标志算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算Hale Waihona Puke Baidu实现
int i=0; double x,y; double dy,dx; int ymin, ymax; for(i=0;i<=n;i++){ dy = y [i+1] - y [i]; if (dy!=0){ dx = (x [i+1] - x [i]) / dy; if (dy > 0) x = x [i]; else x = x [i+1]; if (y[i] >= y [i+1]){//获得多边形边的端点 ymin = y [i+1]; ymax = y [i]; } else{ ymin = y [i]; ymax = y [i+1]; } for(y = ymin + 1; y <= ymax; y++){ x = x + dx; COLORREF k = RGB(0,0,255), n; n = dc->GetPixel(x,y); if (k == n) dc->SetPixel(x+1,y,RGB(0,0,255)); / /标志边界并处理奇点 else dc->SetPixel(x,y,RGB(0,0,255)); } } } // maxx、maxy、minx、miny是获得的多边形最 小矩形包围盒边界值 double x1, y1; for(y1 = miny - 1 ; y1<= maxy - 1;y1++) { in_flag = 0;//多边形内部标志变量 for( x1 = minx - 1;x1<=maxx - 1;x1++) { COLORREF l,m; l = dc->GetPixel(x1,y1); m = RGB(0,0,255);//多边形边界颜色 if (l == m) { if (in_flag == 0) in_flag = 1; else in_flag = 0; } if (in_flag) dc->SetPixel(x1,y1,RGB(0,0,255)); //在多边形内部填充色蓝色 else dc->SetPixel(x1,y1,RGB(255,255,255)); //在多边形外部填充色白色 } }
相关文档
最新文档