正在加载图片...
先计算出线条的四个顶点,e,f,g,h 再用直线段把相邻角点连接起来 最后调用多边形填充算法把所得的四边形进行填色 12、为26个英文大写字母设计5X7的字符掩膜矩阵 13、编写一程序实现线段裁剪的中点分割算法 算法设计: (1)输入直线段的两端点坐标:P0(xO,yo),P1(x1,y1)绘制坐标为(Wx,wy),(wx,W)的窗口 (2)P。点的编码为RC,P1点的编码为RC1 (3)若RC。RC=0,对直线段应“取”,转步骤(6):否则若RC|RC1≠0,对直线段应“弃” 转步骤(6)。 (4)如果直线段有一个端点在窗口内,则计算该直线的中点坐标 P[x=(x0+x1)/2,y=(y0+y1)/2],并计算其编码RC。如果中点P和P在规定的误差范围内(例 如10)不重合,则判断中点是否也在窗口内,如果在,PP“取”之,否则,PP。“弃”之。 将中点P赋给点P1,转步骤(6) (5)如果直线段的两个端点都不在窗口内,则必定与窗口相交,求该直线中点坐标 P[x=(x0+x1)/2,y=(y0+y1)/2]和其编码RC。当中点P在窗口外时,如果R&RC=0,则PP在 窗口外,“弃”之;否则PP0在窗口外,“弃”之,直到中点P在窗口内。对于中点在窗口内 的直线段PP1和PP,重复步骤(4)。 (6)输出裁减后的线段。 主要代码: Void MidClip(double POx, double POy, double Plx, double Ply, BOOL flag) Doublex,y Unsigned int RCToRctl RCTO=EnCode(POx, POy) RCTI=EnCode(Plx, Ply) X=( POX+ Plx)/2 y=( POy+ Ply)/2; RCT=En Code(x,y) while(abs(x-POx)>le-6ll abs(y-POy )>1e-6) if(RCT=0中点也在窗口内,则P=P0 POvEY先计算出线条的四个顶点,e, f, g, h 再用直线段把相邻角点连接起来, 最后调用多边形填充算法把所得的四边形进行填色 12、为 26 个英文大写字母设计 5X7 的字符掩膜矩阵。 13、编写一程序实现线段裁剪的中点分割算法 算法设计: (1)输入直线段的两端点坐标:P0(x0,y0),P1(x1,y1)绘制坐标为(wxl, wyt),(wxr,wyb)的窗口 (2)P0点的编码为 RC0, P1点的编码为 RC1。 (3)若 RC0|RC1=0,对直线段应“取”,转步骤(6);否则若 RC0|RC1≠0,对直线段应“弃”, 转步骤(6)。 ( 4 )如果直线段有一个端点在窗口内,则计算该直线的中点坐标 P[x=(x0+x1)/2,y=(y0+y1)/2],并计算其编码 RC。如果中点 P 和 P0在规定的误差范围内(例 如 10-6)不重合,则判断中点是否也在窗口内,如果在,PP0 “取”之,否则,PP0 “弃”之。 将中点 P 赋给点 P1,转步骤(6)。 (5)如果直线段的两个端点都不在窗口内,则必定与窗口相交,求该直线中点坐标 P[x=(x0+x1)/2,y=(y0+y1)/2]和其编码 RC。当中点 P 在窗口外时,如果 RC0&RC1=0,则 PP1在 窗口外,“弃”之;否则 PP0在窗口外,“弃”之,直到中点 P 在窗口内。对于中点在窗口内 的直线段 PP1和 PP0,重复步骤(4)。 (6)输出裁减后的线段。 主要代码: Void MidClip(double P0x, double P0y, double P1x, double P1y,BOOL flag) { Double x,y; Unsigned int RCT0,RCT1; RCT0=EnCode(P0x,P0y); RCT1=EnCode(P1x,P1y); x=( P0x+ P1x)/2; y=( P0y+ P1y)/2; RCT=EnCode(x,y); while(abs(x-P0x)>1e-6|| abs(y-P0y)>1e-6) { if(RCT==0)//中点也在窗口内,则 P=P0 { P0x=x; P0y=y;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有