24小时热门版块排行榜    

查看: 995  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

glazio

铁虫 (小有名气)

[求助] 如何计算多粒子聚集体系的最大长度

如果有某团聚体由N个球形粒子(相同尺寸、质量)组成,该使用什么算法找到该团聚体中相聚最远的两个粒子,并由此得到团聚体的最大长度L呢?团聚体的模型请参考这个链接( http://v.youku.com/v_show/id_XNDQyMzYzODEy.html )

我的想法是首先得到该团聚体的重心G,然后以G为起始点寻找距它最远的粒子A,最后再以A为起始点寻找距离最远的点B,这样A和B之间的距离就是L。

[ Last edited by glazio on 2012-8-23 at 12:55 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢应助 2012-08-25 00:24:44
双重循环计算距离,如果比当前最大距离大,更新最大距离(如果需要这2个粒子的信息,将下标也存储),如果将粒子两两距离看做一个矩阵,你只需要计算上三角(或者下三角),内存循环从当前坐标往大取.类似
CODE:
// 初始化,将粒子的中心坐标存入particle.centre[N],下标范围[0,N-1]
maxDist = 0;
ind1 = 0;
ind2 = 0;
for (int i=0;i {
        for (int j=i+1;j         {
                curDist = computeDistance(particle.centre[ind1],particle.centre[ind2]);
                if (curDist>maxDist)
                {
                        maxDist = curDist;
                        ind1 = i;
                        ind2 = j;
                }
        }
}
// 打印输出maxDist和ind1,ind2

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-08-23 15:40:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 glazio 的主题更新
信息提示
请填处理意见