计算机图形学实验有效边表填充算法_第1页
计算机图形学实验有效边表填充算法_第2页
计算机图形学实验有效边表填充算法_第3页
计算机图形学实验有效边表填充算法_第4页
计算机图形学实验有效边表填充算法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 2-2一、实验题目 给定四个点绘制图4-44所示的不同转角的两个正方形,使用有效边表算法进行填充,填充效果如图4-45所示,注意采用“左闭右开”和“上闭下开”的原则,使得每个正方形的右边界和下边界没有填充。二、实验思想 有效边表填充算法通过维护边表和有效边表,避开了扫描线与多边形所有边求交的复杂运算。填充原理是按照扫描线从小到大的移动顺序,计算当前扫描线与有效边的交点,然后把这些交点按x值递增的顺序进行排序、配对,以确定填充区间,最后用指定颜色填充区间内的所有像素,即完成填充工作。三、实验代码voidCTestView::GetMaxX()//获得屏幕宽度{ CRectRect; GetClientRect(&Rect); MaxX=Rect.right;}voidCTestView::GetMaxY()//获得屏幕高度{ CRectRect; GetClientRect(&Rect); MaxY=Rect.bottom;}voidCTestView::ReadPoint()//读入点表函数{ //设置第一个正方形的4个顶点 inta=160; P1[0]=CP2(MaxX/4-a,MaxY/2+a);//P0 P1[1]=CP2(MaxX/4+a,MaxY/2+a);//P1 P1[2]=CP2(MaxX/4+a,MaxY/2-a);//P2 P1[3]=CP2(MaxX/4-a,MaxY/2-a);//P3 //设置第二个正方形的4个顶点 intb=ROUND(sqrt(2)*a); P2[0]=CP2(3*MaxX/4,MaxY/2+b);//P0 P2[1]=CP2(3*MaxX/4+b,MaxY/2);//P1 P2[2]=CP2(3*MaxX/4,MaxY/2-b);//P2 P2[3]=CP2(3*MaxX/4-b,MaxY/2);//P3 }voidCTestView::DrawRect(CDC*pDC,CP2*P)//绘制正方形函数{ CP2T; CLineline; for(inti=0;i<4;i++)//边循环 { if(i==0) { line.MoveTo(pDC,P[i]); T=P[0]; } else { line.LineTo(pDC,P[i]);; } } line.LineTo(pDC,T);//闭合}voidCTestView::OnMENUIFill(){ //TODO:Addyourcommandhandlercodehere COLORREFFColor; CColorDialogccd(RGB(255,0,0)); if(ccd.DoModal()==IDOK)//调用调色板选取色 { FColor=ccd.GetColor(); m_Red=GetRValue(FColor);//获得颜色的红色分量 m_Green=GetGValue(FColor);//获得颜色的绿色分量 m_Blue=GetBValue(FColor);//获得颜色的蓝色分量 } RedrawWindow();//刷新屏幕 FillRect(P1);//填充正方形1 FillRect(P2);//填充正方形2 }voidCTestView::FillRect(CP2*P)//填充正方形函数{ CFillfill; CPi2Point[4]; for(inti=0;i<4;i++) { Point[i].x=P[i].x; Point[i].y=ROUND(P[i].y); Point[i].c=CRGB(double(m_Red)/255.0,double(m_Green)/255.0,double(m_Blue)/255.0); } CDC*pDC=GetDC(); fill.SetPoint(Point,4);//填充正方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论