试验3基本图元生成算法.PDF

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 3 基本图元生成算法 一、实验目的: 1. 掌握使用BCB 进行基本图形绘制的方法 2. 掌握基本图元包括直线、圆(圆弧)、抛物线等基本图形的绘制算法 3. 学习使用C(C++)绘制图形的命令和语法 4. 学习使用像素颜色的设置命令 二、重点难点: 重点:基本图形的生成方法。主要包括直线生成的方法、抛物线的生成方法 难点:抛物线的生成方法。 实验过程: 1. 直线的绘制 void __fastcall TForm1::BitBtn2Click(TObject *Sender) { dda(0,0,200,200); } void __fastcall TForm1::dda(int x1, int y1, int x2, int y2) { int i,dx,dy,step; float x,y; float xinc,yinc; dx=(x2-x1); dy=(y2-y1); if(abs(dx)=abs(dy)) step=dx; else step=dy; xinc=(float)dx/step; yinc=(float)dy/step; x=x1; y=y1; Image1-Canvas-Pixels[x][y]=clYellow; for(i=1;istep;i++) { x=x+xinc; y=y+yinc; x1=x+0.5; y1=y+0.5; Image1-Canvas-Pixels[x1][y1]=clRed; } } 程序的调试方法: (1)在Unit1.h 文件中声明:dda(int x1, int y1, int x2, int y2) (2)在Unit1.h 文件中给出详细的定义。 (3)在Button 中调用函数。 2. Bresenham 直线绘制方法的实现 void __fastcall TForm1::BitBtn3Click(TObject *Sender) { Bresenham(0,0,60,150) ;} void __fastcall TForm1::Bresenham(int x1, int y1, int x2, int y2) { // setpixel(x1,y1, color); Image1-Canvas-Pixels[x1][y1]=clBlack; int dx=abs(x2-x1); int dy=abs(y2-y1); if ( dx==0 dy==0) return; int flag=0; if (dxdy) //下面将斜率变换至 0≤|k|≤1 区间 { flag=1; swap_value(x1, y1); swap_value(x2, y2); swap_value(dx, dy); } int tx=(x2-x1) 0 ? 1:-1; int ty=(y2-y1)0 ? 1: -1; int curx=x1; int cury=y1; int dS=2*dy; int dT=2*(dy-dx); int d=dS-dx; while (curx!=x2) { if (d0) d+=dS; else { cury+=ty; d+=dT; } if (flag) //setpixel(cury, curx, color); Image1-Canvas-Pixels[cury][curx]=clBlack; else //setpixel(curx, cury, color); Image1-Canvas-Pixels[curx][cury]=clBlack; curx+=tx; } } void __fastcall TForm1::swap_value (int* a, in

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档