图形学编程问题 30
(1)在屏幕上画十几条线段,然后定义一个裁减窗口,用下列三个算法对这些直线进行裁减:直线求交法,Cohen-Sutherland算法,中点分割算法。(2)在屏幕上画一个平...
(1)在屏幕上画十几条线段,然后定义一个裁减窗口,用下列三个算法对这些直线进行裁减:直线求交法,Cohen-Sutherland 算法,中点分割算法。
(2)在屏幕上画一个平面六边形,用栅栏填充算法进行填充。
用vc++编程 请发到QQ邮箱190274273@qq.com 谢谢。。。。 展开
(2)在屏幕上画一个平面六边形,用栅栏填充算法进行填充。
用vc++编程 请发到QQ邮箱190274273@qq.com 谢谢。。。。 展开
2个回答
展开全部
一些应用需要涉及任意多边形窗口(含凹多边形窗口)的裁剪。Weiler-Atherton多边形裁剪算法正是满足这种要求的算法。
Weiler-Atherton又称双边裁剪法。
我找到了中国地质大的一个有关的教程,其中的算法过程具体如下:
1、算法在实现中,需要用到六个数组,分别用来存放:被裁剪多边形、裁剪窗口、交点数组、插入交点后的被裁剪多边形、插入交点后的裁剪窗口、输出多边形。
2、由于交点具有“入”、“出”标记,因此凡与交点有关的数组都要采用结构数组类型:
struct point
{
double x;
double y;
int flag;
}交点数组,数组3,数组4;
标记flag有三种状态:
0:非交点;
1:“入”点;
-1:“出”点。
3、求交点时,利用被裁剪多边形的各边去对裁剪窗口的各边求交点:
for(被裁剪多边形的各边)
{
…;
for(裁剪窗口的各边)
{
求有效交点;放入交点数组;
…;
}
}
4、交点的顺序插入,意味着要对交点数组排序后再分别插入到数组1、数组2的相应位置上。
5、所谓找“入”点、“出”点,必须根据flag找寻满足条件的顶点位置。不光数组3中要找“入”点、“出”点,而且找到后还要转到数组4的相应顶点位置处。对数组4的处理也同上。这种处理在本算法中大量遇到。
Weiler-Atherton又称双边裁剪法。
我找到了中国地质大的一个有关的教程,其中的算法过程具体如下:
1、算法在实现中,需要用到六个数组,分别用来存放:被裁剪多边形、裁剪窗口、交点数组、插入交点后的被裁剪多边形、插入交点后的裁剪窗口、输出多边形。
2、由于交点具有“入”、“出”标记,因此凡与交点有关的数组都要采用结构数组类型:
struct point
{
double x;
double y;
int flag;
}交点数组,数组3,数组4;
标记flag有三种状态:
0:非交点;
1:“入”点;
-1:“出”点。
3、求交点时,利用被裁剪多边形的各边去对裁剪窗口的各边求交点:
for(被裁剪多边形的各边)
{
…;
for(裁剪窗口的各边)
{
求有效交点;放入交点数组;
…;
}
}
4、交点的顺序插入,意味着要对交点数组排序后再分别插入到数组1、数组2的相应位置上。
5、所谓找“入”点、“出”点,必须根据flag找寻满足条件的顶点位置。不光数组3中要找“入”点、“出”点,而且找到后还要转到数组4的相应顶点位置处。对数组4的处理也同上。这种处理在本算法中大量遇到。
DFRobot
2024-11-10 广告
2024-11-10 广告
图形化编程是一种直观的编程方式,它通过拖拽图形化的编程积木来构建程序,降低了编程的学习门槛。在上海智位机器人股份有限公司,我们致力于将图形化编程应用于机器人教育等领域,使学习者能够以更加轻松、有趣的方式掌握编程技能。我们的图形化编程平台界面...
点击进入详情页
本回答由DFRobot提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询