计算机图形学基础教程实验报告Word文档格式.docx

上传人:b****3 文档编号:13798786 上传时间:2022-10-13 格式:DOCX 页数:19 大小:96.73KB
下载 相关 举报
计算机图形学基础教程实验报告Word文档格式.docx_第1页
第1页 / 共19页
计算机图形学基础教程实验报告Word文档格式.docx_第2页
第2页 / 共19页
计算机图形学基础教程实验报告Word文档格式.docx_第3页
第3页 / 共19页
计算机图形学基础教程实验报告Word文档格式.docx_第4页
第4页 / 共19页
计算机图形学基础教程实验报告Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

计算机图形学基础教程实验报告Word文档格式.docx

《计算机图形学基础教程实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机图形学基础教程实验报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

计算机图形学基础教程实验报告Word文档格式.docx

程序如下

bresenham画线法:

#include<

graphics.h>

conio.h>

intbresenham(intx0,inty0,intx1,inty1,intcolor)

{

intx,y,dx,dy,e,i;

dx=x1-x0;

dy=y1-y0;

e=-dx;

y=y0;

for(x=x0;

x<

=x1;

x++)

{

putpixel(x,y,color);

e+=2*dy;

if(e>

=0)

{y++;

e-=2*dx;

}

}

return0;

}

intmain()

initgraph(640,480);

bresenham(0,0,500,200,255);

while(!

kbhit())

closegraph();

Bresenham画圆法:

intcirclepoints(intx,inty,intcolor)

putpixel(255+x,255+y,color);

putpixel(255+y,255+x,color);

putpixel(255-x,255+y,color);

putpixel(255+y,255-x,color);

putpixel(255-x,255-y,color);

putpixel(255-y,255-x,color);

putpixel(255+x,255-y,color);

putpixel(255-y,255+x,color);

intbresenhamcircle(intr,intcolor)

intx,y,d;

x=0;

y=r;

d=3-2*r;

while(x<

=y)

circlepoints(x,y,color);

if(d<

0)

d+=4*x+6;

else

d=d+4*(x-y)+10;

y--;

x++;

bresenhamcircle(100,255);

五、实验结果记录与分析

实验结果如下:

6、疑难问题报告

2013年10月29日9、10节实验地点:

多边形的填充算法和曲线的绘制

1、实验目的

通过本次实验,熟练掌握种子填充算法和多边形扫描线填充算法以及bezier曲线或者B样条曲线的基本绘制算法,能够独立在vc环境下实现任意多边形的填充和一般曲线的绘制,进一步熟悉opengl的语法结构和强大的绘图功能,增强多媒体底层程序绘图能力。

1.选择种子填充算法或者多边形的扫描线算法完成多边形的填充。

2.选择bezier曲线或者B样条曲线算法完成曲线的绘制。

程序如下:

多边形扫描线填充算法:

//sweep.h

#ifndefSWEEP_H

#defineSWEEP_H

structEdge{

intnxty;

intcurx;

intdx,dy;

Edge*nxt;

};

voidsweep(intp[][2],intn,void(*setPixel)(int,int));

#endif

//sweepline.cpp

#include<

stdlib.h>

stdio.h>

glut.h>

#include"

sweep.h"

voidmyInit();

voidsetPixel(intx,inty);

voidmyDisplay();

intmain(intargc,char**argv){

glutInit(&

argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(640,480);

glutInitWindowPosition(100,150);

glutCreateWindow("

SweepLine"

);

glutDisplayFunc(&

myDisplay);

myInit();

glutMainLoop();

voidsetPixel(intx,inty){

glBegin(GL_POINTS);

glVertex2i(x,y);

glEnd();

voidmyInit(){

glClearColor(1.0,1.0,1.0,0.0);

glColor3f(0.0,0.0,0.0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0,640.0,0.0,480.0);

voidmyDisplay(){

inti,j;

glClear(GL_COLOR_BUFFER_BIT);

intp[5][2];

p[0][0]=100;

p[0][1]=300;

p[1][0]=200;

p[1][1]=50;

p[2][0]=300;

p[2][1]=100;

p[3][0]=400;

p[3][1]=0;

p[4][0]=350;

p[4][1]=470;

sweep(p,5,setPixel);

glFlush();

}

//sweep.cpp

algorithm>

usingnamespacestd;

constintMAXN=1024;

intcp[MAXN][2],n;

inlineboolcmp(inti,intj){

returncp[i][1]<

cp[j][1]||(cp[i][1]==cp[j][1]&

&

cp[i][0]<

cp[j][0]);

Edge*e[MAXN],*h,*ph,*data;

voidinsert(intly,intpx,intind){

inty1,y2,y,nxt,pre,flag=0;

nxt=(ind+1)%n;

pre=(ind-1+n)%n;

y=cp[ind][1];

y1=cp[nxt][1];

y2=cp[pre][1];

if(y1>

y2)s,y2);

if(y1<

y&

y<

y2){

//需缩短一个单位

flag=1;

h=e[ly];

ph=NULL;

while(h){

if(h->

dy>

cp[ind][1]||(h->

dy==cp[ind][1]&

h->

dx>

cp[ind][0]))break;

ph=h;

h=h->

nxt;

}

data=newEdge;

data->

curx=px;

nxty=cp[ind][1];

dx=cp[ind][0]-px;

dy=cp[ind][1]-ly;

nxt=NULL;

if(flag)data->

nxty--;

if(ph){

nxt=ph->

ph->

nxt=data;

}else{

nxt=e[ly];

e[ly]=data;

intex[MAXN][MAXN],ne[MAXN];

inlineintabs(inta){

returna>

0?

a:

-a;

voidmakepoint(intline,Edge*h){

intdx=h->

dx,dy=h->

dy,cnt=0;

intx,y,flag=1;

if((h->

dx)*(h->

dy)<

0)flag=0;

for(y=line,x=h->

curx;

y<

=h->

nxty;

y++){

ex[y][ne[y]++]=x;

cnt+=2*abs(dx);

while(cnt>

=2*abs(dy)){

cnt-=2*abs(dy);

if(flag)x++;

elsex--;

voidsweep(intp[][2],intnn,void(*setPixel)(int,int)){

//对所有点按y坐标递增排序,y坐标相等的按x坐标递增排序

n=nn;

inti,j,k,ind,nxt,pre;

int*num=newint[n];

//点索引;

for(i=0;

i<

n;

i++)num[i]=i;

memcpy(cp,p,sizeof(cp));

sort(num,num+n,cmp);

//建立有序边表

memset(e,0,sizeof(e));

i++){

ind=num[i];

if(p[nxt][1]>

p[ind][1])insert(p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1