设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: zh99998
打印 上一主题 下一主题

[已经解决] 求一个自动排版算法

 关闭 [复制链接]

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
21
发表于 2009-10-5 14:09:03 | 只看该作者
那么…一开始对同一大小的元件计数,然后分解成两个数的积,枚举,这样只剩五个元件了,然后再排…缺点是所有相同大小的元件都会聚在一起…这样真的可以么?
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

22
 楼主| 发表于 2009-10-5 14:10:35 | 只看该作者
貌似这样会严重不美观,空间利用率也比较低- -
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
23
发表于 2009-10-5 14:16:44 | 只看该作者
对于某个状态,把它和当前状态下完整的矩形的补集分成几个小矩形,元件能往里塞就塞…
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

24
 楼主| 发表于 2009-10-5 15:04:14 | 只看该作者
貌似是个好主意,先把几个大的确定好,然后找空塞小的
原理虽然找到了- -不过要写算法依然没什么思路0.0
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
25
发表于 2009-10-5 19:06:35 | 只看该作者
八神都不会的,我九神就更别说了
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
26
发表于 2009-10-5 19:24:25 | 只看该作者
最开始的时候整个矩形是0,0,544,MaxH
然后新加一个元件w,h……这样就分成[w,0,544-w,MaxH]及[0,h,544-w,MaxH]两个了
我这是竖着切……当然你要横着切也行
然后用队列递归调用,分别遍历所有矩形,直到队列为空。
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
27
发表于 2009-10-5 19:37:01 | 只看该作者
想到一个有趣的

LZ知道吧一大堆杂物,放在一个箱子里面
刚开始体积会很大。你把那个箱子抖几下
空间利用率就会有一定的提升
体积就会缩小。

提出一个新的词吧:可配元

假设窗体宽是 100
一个窗口的宽如果是 60
,那么所有宽小于40的都可以和这个窗体成为可配元。
高也一样。
可配元评分
两个可配元都放入窗体以后,剩下的空间越接近矩形,那评分越高
当然也不排除是3个或更多

组合元
组合元是分级的。两个窗体之间,如果长宽其中一项相近
那么着两个窗口就可以组成新矩形。

先拼入可配评分高的组合元。如果评分时满分,那么以后就不用考虑这两个窗口了
再同样的方法考虑剩下的矩形!

当然实际上的核心,就是你写怎么样吧多个窗口组合成一个新的近似的矩形。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-5-3
帖子
151
28
发表于 2009-10-5 20:07:39 | 只看该作者
LS好强
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

29
 楼主| 发表于 2009-10-5 20:18:31 | 只看该作者
能看懂一些了,矩形评分这倒是很好的思路
不过又有个问题,这些控件大部分都是很小的,并不是一个控件占%60,然后挑小的往里塞的那种
随便拿出一个控件,可能所有其他控件都会成为他的可配元
然后我就就不会评分了……
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

30
发表于 2009-10-5 20:54:59 | 只看该作者
本帖最后由 link006007 于 2009-10-5 20:57 编辑

汗。 越来越专业了啊。。。
还是当成矩形碰撞检查比较简单=  =, 这是在做游戏还是做GUI库啊
可配元什么的  是不是要把较小矩形按照较大矩形为界限对齐拼凑。。
差不多就是要‘预知整体布局’。。。
这里有很多布局方式。。 lz可以参考
http://java.sun.com/docs/books/t ... /layout/visual.html
这里是一种布局的源代码。。 一个通用的布局代码还是很长的-  -
http://sourceforge.net/projects/pagelayout/files/
坦白的说。。。。 好像很复杂- -
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 20:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表