社区
数据结构与算法
帖子详情
★算法高手们:粒子碰撞检测
mngzilin
2010-07-23 08:12:11
问题:
http://topic.csdn.net/u/20100723/19/47b03f81-c82c-48f6-8868-a729fe0ac5a7.html
只要方法可行,分数都归你!~~
谢谢
...全文
429
17
打赏
收藏
★算法高手们:粒子碰撞检测
问题: http://topic.csdn.net/u/20100723/19/47b03f81-c82c-48f6-8868-a729fe0ac5a7.html 只要方法可行,分数都归你!~~ 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mngzilin
2010-07-25
打赏
举报
回复
[Quote=引用 12 楼 mngzilin 的回复:]
引用 11 楼 zmshy2128 的回复:
已经很优化了,建议好好读我的那段文字
for (k = 1:5000) //循环每个粒子
进行更新粒子k的坐标x、y
在大数组中,以坐标(x,y)为中心,检测半径r内的所有点的值,如果存在点的值不为0(假设有值为k2的点),则该点与其他点相撞(与第k2个粒子相撞),处理方法LZ自己解决;否则半径r内的所有点的值全部 设为值k。
end
……
[/Quote]
这个不如划分网格效率高,但是划分网格我还没有解决粒子大小不一问题
mngzilin
2010-07-25
打赏
举报
回复
[Quote=引用 13 楼 ljia0 的回复:]
可以换个思路,不要取中心点,可以检测边界点,当某点属于两粒子以上就说明他碰撞(前提是粒子碰撞不变形)。
[/Quote]
主要是检测“某点属于两粒子”需要遍历其5000个点
ljia0
2010-07-24
打赏
举报
回复
可以换个思路,不要取中心点,可以检测边界点,当某点属于两粒子以上就说明他碰撞(前提是粒子碰撞不变形)。
mngzilin
2010-07-24
打赏
举报
回复
哎,要是能在不降低精度前提下,减少运算次数最好了。否则每一帧都要检测
5000x5000
次,这太庞大了。
Arucart
2010-07-24
打赏
举报
回复
6楼的意思是说整个平面分成一个个微元
然后每个球也相对于圆心表示成一系列微元的集合
然后每一帧对每一个球检查是否有微元被重复覆盖..
是个O(n)的算法,不过这个占用空间也太大了吧.....
mngzilin
2010-07-23
打赏
举报
回复
[Quote=引用 11 楼 zmshy2128 的回复:]
已经很优化了,建议好好读我的那段文字
for (k = 1:5000) //循环每个粒子
进行更新粒子k的坐标x、y
在大数组中,以坐标(x,y)为中心,检测半径r内的所有点的值,如果存在点的值不为0(假设有值为k2的点),则该点与其他点相撞(与第k2个粒子相撞),处理方法LZ自己解决;否则半径r内的所有点的值全部 设为值k。
end
而且可以解决不同尺寸粒子的问题
[/Quote]
你的办法我再缕一缕,测试下
zmshy2128
2010-07-23
打赏
举报
回复
已经很优化了,建议好好读我的那段文字
for (k = 1:5000) //循环每个粒子
进行更新粒子k的坐标x、y
在大数组中,以坐标(x,y)为中心,检测半径r内的所有点的值,如果存在点的值不为0(假设有值为k2的点),则该点与其他点相撞(与第k2个粒子相撞),处理方法LZ自己解决;否则半径r内的所有点的值全部 设为值k。
end
而且可以解决不同尺寸粒子的问题
mngzilin
2010-07-23
打赏
举报
回复
回复6楼:
这个算法仍然有问题,当你判断半径为r的圆形区域有无粒子时候要遍历5000个点才能知道。这样同样复杂。耗时。
和划分网格也不一样
mngzilin
2010-07-23
打赏
举报
回复
[Quote=引用 6 楼 zmshy2128 的回复:]
分给我吧,我知道怎么做
思想
1、将水平平面 数字化,用一个大数组表示(每个点的精度自己去估计)。
每个圆形粒子的面积也数字化表示,每个固定时刻在 大数组中 只占用一定数目的点(圆形分布)。
2、定义表示粒子的类,需要中心坐标 x、y、和半径r表示,不同的半径r,对应不同的圆形分布点数(这是个固定值,预先求好)。定义5000个粒子变量,并初始化
3、设置定时器,在每个周期内,需要……
[/Quote]
谢谢这位朋友,
你的方法类似于划分网格,也就是我所提到的算法四。这样次数确实少了很多。但是5000个点的位置的标记过程可否优化?期待.....
winton_adlsy
2010-07-23
打赏
举报
回复
mark
GResume
2010-07-23
打赏
举报
回复
楼上的我怎么没看懂 悲剧
zmshy2128
2010-07-23
打赏
举报
回复
分给我吧,我知道怎么做
思想
1、将水平平面 数字化,用一个大数组表示(每个点的精度自己去估计)。
每个圆形粒子的面积也数字化表示,每个固定时刻在 大数组中 只占用一定数目的点(圆形分布)。
2、定义表示粒子的类,需要中心坐标 x、y、和半径r表示,不同的半径r,对应不同的圆形分布点数(这是个固定值,预先求好)。定义5000个粒子变量,并初始化
3、设置定时器,在每个周期内,需要定义一个大数组(表示整个水平平面),并全部初始化为0
for (k = 1:5000) //循环每个粒子
进行更新粒子k的坐标x、y
在大数组中,以坐标(x,y)为中心,检测半径r内的所有点的值,如果存在点的值不为0(假设有值为k2的点),则该点与其他点相撞(与第k2个粒子相撞),处理方法LZ自己解决;否则半径r内的所有点的值全部 设为值k。
end
注意,该方法不是两两检测粒子间的距离,典型的以空间换时间的技巧 O(∩_∩)O
mngzilin
2010-07-23
打赏
举报
回复
满三天结贴
renjianxin520
2010-07-23
打赏
举报
回复
mark
ayw215
2010-07-23
打赏
举报
回复
围观。。
mngzilin
2010-07-23
打赏
举报
回复
期待
healer_kx
2010-07-23
打赏
举报
回复
mark~~~
Canvas动画实战:如何用JavaScript模拟逼真烟花效果(2024最新版)
本文详解基于HTML5 Canvas与JavaScript实现逼真烟花效果的技术方案,涵盖
粒子
系统架构设计、物理模拟(抛物线运动与爆炸动力学)、视觉渲染(颜色渐变、发光效果)、性能优化(对象池、Web Workers)及交互扩展(滚动触发、音效同步)。重点聚焦前端实时动画开发中的关键技术选型与工程实践。
Unity 2022.3 管道流动效果:4种主流方案性能与适用场景横向评测
本文基于Unity 2022.3,横向评测UV动画、iTween路径、Trail Renderer和Obi Fluid四种管道流动实现方案。重点分析其核心原理、性能表现(含iPhone 13 Pro实测数据)、视觉真实度及移动端适配策略,并提供选型矩阵与混合使用建议,为游戏开发中流体效果的技术选型提供量化依据。
游戏大厂FPS射击游戏性能优化核心策略——大白话全流程
本文系统讲解了FPS射击游戏在CPU/GPU瓶颈分析、资源管理、逻辑与渲染优化、网络同步、内存控制等方面的性能优化方法,涵盖对象池、LOD、遮挡剔除、帧同步等关键技术,并结合腾讯CF、网易荒野行动等实际案例,提供可落地的全流程解决方案。
Delpih 13.1控件之《AVP虚拟化系统》简要使用手册图片显示完整版.7z
Delpih 13.1控件之《AVP虚拟化系统》简要使用手册图片显示完整版.7z
java面试题集和笔试题汇总
代码转载自:https://pan.quark.cn/s/a4b39357ea24 关于Java的面试资源、面试题库以及笔试题的集合资料,关于Java的面试资源、面试题库以及笔试题的集合资料,关于Java的面试资源、面试题库以及笔试题的集合资料,涵盖了基础面试问题、Java Web面试问题、JAVA面试题库.txt以及分布式相关面试问题的汇编.pdf。期待这些资料能够对您提供有效的支持!!
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章