图形学作业与答案 doc- 精品课程建设平台

2019-03-22 20:21

图形学作业与答案.doc - 精品课程建设平台

摘要:优缺点:边缘填充算法的数据结构和程序结构都简单的多,缺点:执行时许对帧缓冲器中的大批元素反复赋值,故速度不必扫描线算法快,另外,如果区域内原来有其他的颜色, ... 关键词:算法,数据结构 类别:专题技术

来源:牛档搜索(Niudown.COM)

本文系牛档搜索(Niudown.COM)根据用户的指令自动搜索的结果,文中内涉及到的资料均来自互联网,用于学习交流经验,作品其著作权归原作者所有。不代表牛档搜索(Niudown.COM)赞成本文的内容或立场,牛档搜索(Niudown.COM)不对其付相应的法律责任!

第三章作业与答案

3.1 试证:若把(3.30)改为

??xi?1??cos??y???b?i?1??sin??a则该式可用于产生椭圆

a??sin???x?x??x?icb??c? ???cos???yi?yc??yc??(x?xc)2/a2?(y?yc)2/b2?1

上的点,从而可用于绘椭圆。 证明:将待证式展开得:

xi+1 = xc + (xi-xc)cos?- (yi-yc)?asin? bayi+1 = yc + (xi-xc)sin? + (yi-yc)cos?

b该式即为计算椭圆内接多边形顶点的递推公式,并可知椭圆的长短轴分别为 a和b,中心点为(xc,yc),对称轴平行于坐标轴,即: (x?xc)2/a2?(y?yc)2/b2?1 证毕。

3.2 用二元函数的泰勒(Taylor)展式证明(3.16),并把正负法推展到绘椭圆

(x?xc)2/a2?(y?yc)2/b2?1

证明:二元函数的泰勒(Taylor)展开式:

设函数f(x,y)在点(x,y)某一邻域内连续,且有直至n+1阶的连续偏导数,给xi以增量?x;给yi以增量?y,使连接点(xi,yi)、(xi+?x,yi+?y)的直线段仍在点(xi,yi)的邻域内,则可将函数值f(xi+?x,yi+?y)近似表示为?x,?y 的n 次多项式:

f(xi+?x,yi+?y)=f(xi,yi)+( ?x

??+?y)f(xi,yi)+ ?x?y1?1??2

( ?x+?y)·f(xi,yi)+…+( ?x+?

?x?x2!n!?yy

?n

)·f(xi,yi)+ Rn ?y 由此所产生的误差Rn是一个比?x2??y2高于n阶的无穷小。

由圆的方程:(x-xc) 2+ (y-yc) 2 - R2 =0 2(xi-xc) 当f(xi,yi)≤0时 ( ?x=0

-2(yi-yc) 当f(xi,yi)>0时 ?x=0,?y=-1

21?1?2 2?f( ?x+?y)·f(xi,yi)= ( ?x

?x2!2!?x?y??f?+?y)f(xi,yi)= ?x

?x?x?y?xi

+?y

?f?y?yi= ?

x=1,?y

?xi+2?x?y

?f?x?xi

?f?y?yi+?

?f2y?y2

?yi)

1 当f(xi,yi)≤0时, ?x=1,?y=0

=

1 当f(xi,yi) >0时, ?x=0,?y=-1

F(xi,yi)+2(xi-xc)+1当f(xi,yi)≤0

时f(xi+?x,yi+?y)=F(xi+1,yi+1) ≈

F(xi,yi)-2(yi-yc)+1 当f(xi,yi) >0时

证毕。

由椭圆方程:(x?xc)2/a2?(y?yc)2/b2?1?0 ;转化为:

b2(x?xc)2?a2(y?yc)2?a2b2?0

同理推出椭圆正负法(不分上、下区的简单)递推公式为:

F(xi,yi)+2b2(xi-xc)+b2当f(xi,yi)≤0

f(xi+?x,yi+?y)=F(xi+1,yi+1)≈

F(xi,yi)-2 a2 (yi-yc) +a2 当f(xi,yi)>0

3.3 试证:若把(3.24)改为

a??cos??sin???xi?xc??xc??xi?1??b???y???b???y? y?yc??i?1??sin??c?cos???i?a?则该式可用于产生椭圆

(x?xc)2/a2?(y?yc)2/b2?1

上的点,从而可用于绘椭圆。 证明:假设椭圆的中心在(xc,yc),长短轴分别为a,b,对称轴平行于坐标轴,则椭圆的参数方程为

x?acos??xc,y?bsin??yc

则顶点序列的第I个顶点Pi的坐标为(xi ,yi)(ao,则下一个顶点cs?i,bnis?i)Pi+1的坐标为(xi+1 ,yi+1)应该满足

xi?1?acos(?i??)?xc, yi?1?bsin(?i??) ?yc 经过整理可得

xi?1?xc?a(cos?cos??sin?sin?)yi?1?yc?b(sin?cos??cos?sin?)

因为xi?acos?i?xc, yi?bsin?i ?yc 整理可得

a??cos? -sin???xi?xc??xc??xi?1??b???,这就是计算椭圆的第推公式 ???y???a??i?1??sin? cos???yi?yc??yc????b?

3.4 多边形的顶点和点阵表示各有什么优点?

答:顶点表示是用多边形的顶点的序列来描述多边形,该表示几何意义强、占内存少。(但他不能直观地说明哪些像素在多边形内)。点阵表示用位于多边形内的像素的集合来描述多边形。该方法虽然没有多边形的几何信息,是面着色所需要的图像表示形式。

3.5多边形扫描填充的扫描线算法利用了区域的连续性、扫描线连续性和边的连续性,在数据结构和算法中各体现在何处?

答:ET数据结构体现了区域的连贯性、边的连贯性。AEL体现了扫描线的连贯性、边的连贯性。AEL的动态增删及排序集中体现了扫描线的连贯性和边的连贯性。

3.6任意给定五边形的五个顶点坐标,利用多边形填充的扫描线算法,编写程序生成一个实心五边形。

答:

typedef struct tEdge{ int yUpper; int xIntersect; float dxPerScan; struct tEdge * next; }Edge;

void insertEdge(Edge * list,Edge * edge) {

Edge * p ,* q=list; p=q->next;

while(p!=NULL){

if(edge->xIntersectxIntersect) p=NULL; else{ q=p;

p=p->next; } }

edge->next=q->next; q->next=edge; }

int yNext(int k,int cnt,CPoint *points) {

int j;

if((k+1)>(cnt-1)) j=0; else

j=k+1;

while(points[k].y==points[j].y) if((j+1)>(cnt-1)) j=0; else j++;

return(points[j].y); }

void makeEdgerec(CPoint lower,CPoint upper,int yComp,Edge edge,Edge *edges[])

{

edge->dxPerScan=(float)(upper.x-lower.x)/(upper.y-lower.y); edge->xIntersect=lower.x; if(upper.y

edge->yUpper=upper.y-1; else

edge->yUpper=upper.y;

insertEdge(edges[lower.y],edge); }

void buildEdgeList(int cnt,CPoint *points,Edge * edges[]) {

Edge *edge; CPoint p1,p2;

int i,yprev=points[cnt-2].y; p1.x=points[cnt-1].x; p1.y=points[cnt-1].y; for(i=0;i

*


图形学作业与答案 doc- 精品课程建设平台.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:企业管理中的“与人方便,自己方便”-201311-牛海姣

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: