如何用C语言绘制多边形?希望得到源程序
原题是这样的:任意封闭多边形内影线填充算法及其软件实现在各种设计图纸中常常用画有影线的区域来表示零件的剖切断面,设计任意封闭多边形区域的填充算法,并编写计算机程序。提示:...
原题是这样的:任意封闭多边形内影线填充算法及其软件实现
在各种设计图纸中常常用画有影线的区域来表示零件的剖切断面,设计任意封闭多边形区域的填充算法,并编写计算机程序。
提示:
(1)影线的计算
影线为直线,并且斜率k=tgα已知,因此直线方程可表示为:
y=kx+b
b为影线在y轴上的截距。不同位置的影线截距b不同,相邻两条平行影线截距差为⊿b。
设封闭多边形的顶点坐标为(xi,yi) 则最大截距和最小截距分别为:
bmax=max(yi-kxi) bmin=min(yi-kxi)
影线总数为 n=(bmax- bmin)/ Db
(2)影线与轮廓线求交点
从第一条影线开始,顺次取一条影线,
求出它与轮廓边的交点,方法是判断
该影线的截距是否落在轮廓边所对应
的截距区间内。具体算法步骤如下:
若影线的截距b没有落入当前这条轮廓边
两端点(pi,pi+1)所对应的截距(bi, bi+1)
范围之内,则说明影线与该轮廓边不相
交,则顺次取下一条边。否则,转下一
步求交运算。
交点坐标为
交点排序并绘制影线
将原始交点按x坐标递增顺序排序,然后按奇偶规则连线,绘出分段影线。
奇异点处理
当角点处的两条轮廓边位于影线的两侧时,应该算一个交点。
当角点处的两条轮廓边位于影线的同侧时,最好不计交点,或者算两个交点。
(5) 面向程序实现的算法描述
影线填充算法的步骤如下:
根据填充区域的数据和绘制影线的角度和间距,计算绘制影线的范围和影线的数量;
计算影线与轮廓边的相交位置;
对已经求出的位于同一影线的交点进行排序,以确定影线的分段情况,用于连线绘图。 展开
在各种设计图纸中常常用画有影线的区域来表示零件的剖切断面,设计任意封闭多边形区域的填充算法,并编写计算机程序。
提示:
(1)影线的计算
影线为直线,并且斜率k=tgα已知,因此直线方程可表示为:
y=kx+b
b为影线在y轴上的截距。不同位置的影线截距b不同,相邻两条平行影线截距差为⊿b。
设封闭多边形的顶点坐标为(xi,yi) 则最大截距和最小截距分别为:
bmax=max(yi-kxi) bmin=min(yi-kxi)
影线总数为 n=(bmax- bmin)/ Db
(2)影线与轮廓线求交点
从第一条影线开始,顺次取一条影线,
求出它与轮廓边的交点,方法是判断
该影线的截距是否落在轮廓边所对应
的截距区间内。具体算法步骤如下:
若影线的截距b没有落入当前这条轮廓边
两端点(pi,pi+1)所对应的截距(bi, bi+1)
范围之内,则说明影线与该轮廓边不相
交,则顺次取下一条边。否则,转下一
步求交运算。
交点坐标为
交点排序并绘制影线
将原始交点按x坐标递增顺序排序,然后按奇偶规则连线,绘出分段影线。
奇异点处理
当角点处的两条轮廓边位于影线的两侧时,应该算一个交点。
当角点处的两条轮廓边位于影线的同侧时,最好不计交点,或者算两个交点。
(5) 面向程序实现的算法描述
影线填充算法的步骤如下:
根据填充区域的数据和绘制影线的角度和间距,计算绘制影线的范围和影线的数量;
计算影线与轮廓边的相交位置;
对已经求出的位于同一影线的交点进行排序,以确定影线的分段情况,用于连线绘图。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询