Z填充曲线的生成..doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Z填充曲线的生成.

Z填充曲线的生成 功能操作步骤: 单击工具栏的z曲线工具,弹出对话框,输入阶数n,确定生成n阶z填充曲线。 功能实现流程: 1.添加工具项:在工具栏上添加一个类型为button的工具;然后在属性框设置text为Z曲线;设置name为z;设置Image为前面提供位置的任意图片或自己绘制一个图片。设置事件框中的单击事件click;对着click双击,弹出代码文件。 2.为事件函数添加如下代码 Graphics gra = panel1.CreateGraphics(); ZForm zform=new ZForm();//新窗体对话框 zform.ShowDialog(); int order = (int)Math.Pow(2,zform.value);//获得阶数 Rectangle rect = new Rectangle(0, 0, panel1.Width, panel1.Height);//获得要填充的窗体/面板 ListPoint_T zpts = ZFill(rect,order);//调用z曲线排序 for (int i = 0; i zpts.Count - 1; i++)//绘制z填充曲线 { gra.DrawLine(Pens.Red,new Point((int)zpts[i].X,(int)zpts[i].Y),new Point((int)zpts[i+1].X,(int)zpts[i+1].Y)); } 3.在主程序的命名空间下添加一个类,并使得该类继承From类;之后设计该新的窗体。 1)首先将窗体的text改为Z曲线—输入阶数; 2)添加一个textbox,并将其name改为ztb; 3)添加一个button,并将其text改为确定,name改为zbt,并对其添加一个单击事件。 4)事件中添加如下代码:目的是为了将文本框中的值保存已被主程序调用。 value = Convert.ToInt32(ztb.Text); this.Hide(); this.Close(); 5)假如没有构造函数,添加一个构造函数 public ZForm() { InitializeComponent(); } 6)添加一个公有字段value 4.添加算法代码 public ListPoint_T ZFill(Rectangle rect, int order)//z曲线排序 { ListPoint_T pts = new ListPoint_T(); ListPixelPosition_T zpps = new ListPixelPosition_T(); for (int i = 0; i order; i++) { for (int j = 0; j order; j++) { int[] biri = DecToBir(i);//十进制转二进制 int[] birj = DecToBir(j);//十进制转二进制 int[] birmor = MortonCode(birj, biri);//morton码 int decmor = BirToDec(birmor);//二进制转十进制 PixelPosition_T pp = new PixelPosition_T(i, j, decmor);//构建包含morton码的网格 zpps.Add(pp);//添加存储 } } CompareMorton commor = new CompareMorton(); zpps.Sort(commor); foreach (PixelPosition_T pp in zpps) {

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档