首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要帮助加快粒子系统(或如何要求海龟不要问其他海龟)。

需要帮助加快粒子系统(或如何要求海龟不要问其他海龟)。
EN

Stack Overflow用户
提问于 2016-01-12 17:17:54
回答 2查看 91关注 0票数 0

作为一个玩具,它工作得很好,但很明显,当它放大时,它就会陷入泥潭。我怎样才能做到这个系统,而不要求海龟问其他海龟呢?因此,代码是。

代码语言:javascript
运行
复制
to go
 ask turtles  
  [
  ask other turtles [
                     set heading towards myself 
                     let D distance myself
                     let C  .1 / D - 1 / (D ^ 2) 
                     if C > 1 [set C 1]
                     fd C
                    ]
  ]

tick

结束

我应该知道怎么做,但大脑不起作用。如果我先得到答案的话,我会跟你们竞争,然后贴出我自己的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-01 21:38:29

你在想这个吗?

代码语言:javascript
运行
复制
turtles-own [m]

 to setup
  ca
  crt 1000 [
      setxy random-xcor random-ycor
      set shape "dot"
      set color white
      set m random-float 5
      set size 2 * (m / pi) ^ .5
      ]
end

to go
ask turtles
 [
  set heading weighted-mean-heading other turtles 
  let mv sum [m / (distance myself ^ 2) / [m] of myself ] of other turtles
  if mv > .1 [set mv 1]
  if mv < -.1 [ set mv -1]
  bk mv
 ]

 ask turtles 
  [
   ask other turtles in-radius (size / 4) [ask myself [set m m + [m] of myself] die ]
   set size 2 * (m / pi) ^ .5
 ]
end

to-report weighted-mean-heading [turts]
  let mean-x sum [sin towards myself * m / (distance myself ^ 2)] of turts / sum [m / distance myself ^ 2] of turts / m
  let mean-y sum [cos towards myself * m / (distance myself ^ 2)] of turts / sum [m / distance myself ^ 2] of turts / m
  report atan mean-x mean-y
  end
票数 0
EN

Stack Overflow用户

发布于 2016-01-13 00:55:30

你实际上是在做一个N体模拟。主要的区别是你的系统中没有速度。不幸的是,没有简单的方法来模拟这个系统,而不要求每一只海龟去问其他海龟。然而,有许多更复杂的算法。

巴恩斯将空间划分为一棵嵌入区域的树,并计算每个区域的质量中心。然后,当一只海龟决定去哪里时,它看的是区域,而不是个别的海龟。如果您熟悉O-表示法,它将在O(n log(n))中运行。应该可以修改Barnes-Hut来处理您的公式。

我不相信粒子网格方法可以在您的模型中使用,但是,老实说,我不完全理解它们是如何工作的。

我注意到方程中的分母(.1 / D - 1 / (D ^ 2),即.1 / (D - 1 * (D ^ 2))在D中是立方的,这意味着它会很快下降。所以你可以限制海龟的半径:ask other turtles in-radius 5 ...in-radius运行的时间与半径内的补丁数成正比(加上半径中的海龟数量),所以如果这个数目明显小于海龟总数,这可能会导致一个不错的加速比。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34749916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档