矩形点位自动排布算法研究.doc

上传人:cl****1 文档编号:562749169 上传时间:2023-04-12 格式:DOC 页数:12 大小:201KB
返回 下载 相关 举报
矩形点位自动排布算法研究.doc_第1页
第1页 / 共12页
矩形点位自动排布算法研究.doc_第2页
第2页 / 共12页
矩形点位自动排布算法研究.doc_第3页
第3页 / 共12页
矩形点位自动排布算法研究.doc_第4页
第4页 / 共12页
矩形点位自动排布算法研究.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《矩形点位自动排布算法研究.doc》由会员分享,可在线阅读,更多相关《矩形点位自动排布算法研究.doc(12页珍藏版)》请在金锄头文库上搜索。

1、矩形点位自动排布算法研究王朋武 20/12, 2011在游戏软件中的人员与机关排布、在粮库粮食温度测量时的监测杆布置以及各种与点位排布有关的软件编程中,如何根据需要快速自动地计算出各点位的坐标,是一个很重要的问题。近段时间我对此进行了一番研究,以下仅对此进行简单地阐述,希望会对有关人员有所帮助。假设排布方式为矩形。对排布条件做如下分类:第一点位置可能在:西北角东北角西南角东南角排列方式分为:层叠形蛇形排列方向有:横排竖排横梅花竖梅花说明:层叠形是指点位排列时,每一行或列的数字排列方式都一样,具有重复性,如下图例:蛇形是指点位排列时,整个行或列的数字连线就象蛇一样具有连续性,如下图例:梅花形是

2、指点位排列时,行或列的点处在其上下左右行或列中间的空隙位置,每一点四周都均匀地排列着六个点,就象梅花一样。如下图例:由于在计算过程中的浮点数到整数变换时造成的累积误差,所以添加可调整各点间距以及整体位移的上下左右四个方向控件,进行点位调整。程序用Delphi 7编制。程序不算复杂,在此我列出需要的主要程序源码,并把有关界面图拷屏贴出来,方便大家参考。布点范围:500500。* 作者:王朋武 时间:30/11, 2011 说明:重新排列点位*procedure Tfrm_poleloc.btn_arrangeClick(Sender: TObject);var i, j, m, n, k, x0

3、, y0, x, y, p, q, r, w, t: Integer; h, v: Integer; str_name: String;begin if not gbx_arrange.Visible then exit; m := 5; if edt_row.Text then m := edt_row.Value; if (cmb_dir.Text = 横梅花) or (cmb_dir.Text = 竖梅花) then begin i := 1; k := 0; while k m then k := n; q := Math.Floor(490 - 20 * k) / (k - 1);

4、/圆外轮廓间距 if q n then begin if cmb_first.Text = 西北角 then begin x0 := Math.Floor(490 - h * n + q) / 2) + ii_ho; y0 := 5 - Math.Floor(m-1) / 2) * ii_v - ii_ve; end else if cmb_first.Text = 西南角 then begin x0 := Math.Floor(490 - h * n + q) / 2) + ii_ho; y0 := 475 + Math.Floor(m-1) / 2) * ii_v - ii_ve; end

5、 else if cmb_first.Text = 东北角 then begin x0 := Math.Floor(490 + h * n - q) / 2) + ii_ho; y0 := 5 - Math.Floor(m-1) / 2) * ii_v - ii_ve; end else begin /东南角 x0 := Math.Floor(490 + h * n - q) / 2) + ii_ho; y0 := 475 + Math.Floor(m-1) / 2) * ii_v - ii_ve; end; end else begin if cmb_first.Text = 西北角 the

6、n begin x0 := 5 - Math.Floor(n-1) / 2) * ii_h + ii_ho; y0 := Math.Floor(490 - v * m + q) / 2) - ii_ve; end else if cmb_first.Text = 西南角 then begin x0 := 5 - Math.Floor(n-1) / 2) * ii_h + ii_ho; y0 := Math.Floor(490 + v * m - q) / 2) - ii_ve; end else if cmb_first.Text =东北角 then begin x0 := 475 + Mat

7、h.Floor(n-1) / 2) * ii_h + ii_ho; y0 := Math.Floor(490 - v * m + q) /2) - ii_ve; end else begin /东南角 x0 := 475 + Math.Floor(n-1) / 2) * ii_h + ii_ho; y0 := Math.Floor(490 + v * m - q) /2) - ii_ve; end; end; if cmb_dir.Text = 横梅花 then begin t := m; m := n; n := t; end; w := m; if (cmb_dir.Text =横梅花) or (cmb_dir.Text = 竖梅花) then begin /梅花形 if cmb_dir.Text = 竖梅花 then /竖梅花 for i := 1 to n do /列 begin if i mod 2 = 1 then m := w else m := w - 1; j := 1; while j a_room.i_poles then continue; r := 0; for q := 0 to pan_loc.ControlCount - 1 do begin str_name := pan_loc.Controlsq.N

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号