- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.简单多边形包含性检验的算法:
1.【准备】Xn(X0,yn(y0,m( -1,i(0
2.【排除必不相交情形】若下列条件有一个成立,则到4
1)xpx,xpxi+1
2)xp=xixp=xi+1
3)xpyypyi+1
3.【计算交点】y=yi+(xp-xi)(yi+1 - yi)/(xi+1 - xi)分两种情形:
1)若y=yp,则P在多边形边界上,算法结束
2)若yyp,则 m((-1)m;
4.【结束判断】i(i+1,若in,则返回到2,否则算法结束,此时若m = -1 则点P在多边形外部,m=1,则在内部。
*简述扫描线种子填充算法的工作步骤。
对种子所在的像素段进行填充
从右到左检查种子所在行的上一横行,将查到的像素段依次编号存入堆栈。实际存入堆栈内的可以是每个像素段最右边像素的地址。接着对种子所在行的下一横行同样处理。
若堆栈为空则算法结束,否则从堆栈顶部取出一个像素段。因为按先进后出的顺序,所以将取出编号最大的像素段。实际取出的是这个像素段最右边像素的地址。就以这个像素为新的种子,返回到1.
写出Graham凸壳求解算法
1.(倾角排序)选出输入电集S中X坐标最小的点,若这样的点不唯一则再由其中选出y坐标最小的点,设为O.设想有一条从O向右的射线OX,对点集中其余每一点P,计算倾角POX,再按倾角排序,得到点序列Q1=O,Q2,Q3,…,Qn;
2.(准备扫描)v(Q1;
3.(扫描)若NEXT(v) != Q1,则循环执行下面的操作至NEXT(v)=Q1时止,此时点序列中剩下排成凸多边形的壳上顶点,算法结束。若三个相继的点v, Next(v), Next(NEXT(v))形成一个左转,则v(NEXT(v);否则先删除NEXT(v),再做v(PRED(v);
*写出Jarvis凸壳求解算法
1(准备)v0(点集S中按x,y字典次序最小的点;d(竖直向下的一个方向向量;点v0送入收集凸壳顶点的队列Q中;S1(S – {u,v0};u(v0
2(一步行进)v1(Wrapping(u,d,S1);S1中各点相对于自u出发方向为d的射线,计算倾角,取倾角最小的点,若倾角相同,取与u距离最远的点,Wrapping(u,d,S1);返回下一个壳顶点。
3(准备下次) if v1 != v0,v1送入Q中;S1 = S – {u,v1}; d(从u到v1的一个方向向量; u(v1;返回步骤2
4(结束)Q中存入所有的壳顶点,算法结束
*试写出判定一空间多边形与一凸多面体之间关系的算法
求出空间多边形和凸多面体的包围盒
分别做x,y,z三向测试,若包围盒检查(最大最小检验)有一个为真,则空间多边形和凸多面体分离。算法输出分离并结束。
一次用凸多面体的每一表面多边形来求解与空间多边形各边的交点
若有交点,测试空间多边形的顶点是否均在凸多面体内,若均在体内,则为包含;若有交点,测试空间多边形的顶点有内有外,则相交;若无交点,测试空间多边形的顶点是否在凸多面体内,若均在体内,则为包含;若无交点,测试空间多边形的顶点均在凸多面体外,则为分离。
7.1线面比较法消除隐藏线
1)、消除隐藏线的线面比较法的最先一步就是利用外法线判断出所有可能的可见面。
2)、做xv方向和yv方向的范围检查。
3)、接着做zv方向的范围检查,即粗略的深度比较。
4)、进行精确的深度比较。比较时,应计算线段两端点在可能遮挡它的平面上的投影点,比较相应的z坐标。如果z1≤z1’并且z2≤z2’,则线段不会被遮挡;如果z1≥z1’并且z2≥z2’,则线段有可能被遮挡,还需要做进一步检查。如果不是上述两种情况,必发生线段与表面相交。这时,需要用交点,这些交点把线段的投影分成两部分。判断得知线段确实被平面遮挡了哪些部分。
5)、做精确计算。计算是求出线段的投影与遮挡平面上多边形表面边框投影的所有交点,这些交点把线段的投影分成可见和不可见的一些子线段。对子线段的可见性,先取其上一点做点的包含性检验来进行判断。
7.3*深度排序(优先级)算法
1.把所有的多边形按顶点最大z坐标值进行排序。
2.解决当多边形在z坐标范围内发生交迭时出现的不明确问题
1)多边形的x坐标范围不相交迭,所以多边形不相交迭
2)多边形的y坐标范围不相交迭,所以多边形不相交迭
3)P完全在Q远离观察点的一侧
4)Q完全在P靠近观察点的一侧
5)多边形在z=0平面上的投影本身不相交迭。实现这个检查可以检查一个多边形的每条边与另一个多边形的每条边是否相交。若这步检查为真,则两个多边形也是互补遮挡的。
如果上述5步检查都为假,就假定P遮挡了Q,交换P和Q在排序表中的位置。事实上,P不一定遮挡Q,所以交换后应该重新上述5步的检查。
3.按最大z坐标值逐次减小的次序,对每个多边形进行扫
文档评论(0)