永发信息网

用vb写多个小球碰撞的情况(类似于泡泡状的屏保)

答案:1  悬赏:0  手机版
解决时间 2021-03-04 23:31
用vb写多个小球碰撞的情况(类似于泡泡状的屏保)
最佳答案
由于百度提问有字数限制,换个帐号继续把刚才的发完

If d <= 2 * r Then
If k <> l Then
vk = Sqr((dx(k) ^ 2 + dy(k) ^ 2))
vl = Sqr((dx(l) ^ 2 + dy(l) ^ 2))
sina = (yk - yl) / d
cosa = (xk - xl) / d
sinbk = dx(k) / vk
cosbk = dy(k) / vk
sinbl = dx(l) / vl
cosbl = dy(l) / vl
sin2a = 2 * sina * cosa
cos2a = cosa ^ 2 - sina ^ 2
sin2abk = sin2a * cosbk + sinbk * cos2a
cos2abk = cosbk * cos2a - sin2a * sinbk
sin2abl = sin2a * cosbl + sinbl * cos2a
cos2abl = cosbl * cos2a - sin2a * sinbl
dx(k) = vk * sin2abk
dy(k) = vk * cos2abk
dx(l) = vk * sin2abl
dy(l) = vk * cos2abl
End If
End If
Next

If Shape1(k).Top < 0 Then’以下是避免小球超出屏幕,经验证,没有问题
dy(k) = -dy(k)
End If
If Shape1(k).Top > Me.Height - Shape1(k).Height - 900 Then
dy(k) = -dy(k)
End If
If Shape1(k).Left > Me.Width - Shape1(k).Width - 200 Then
dx(k) = -dx(k)
End If
If Shape1(k).Left < 0 Then
dx(k) = -dx(k)
End If
Shape1(k).Top = Shape1(k).Top + dy(k)‘让小球移动
Shape1(k).Left = Shape1(k).Left + dx(k)
Next

End Sub
相撞时改变方向的公式是我自己算的,由于小球的半径都相同,不考虑质量,所以还算好算,应该是对的。问题在于运行的时候,好像所有的小球相互隔着好远就出现了碰撞才有的现象(速度方向改变),而且据我观察它们速度方向的改变是对的(就是说经观察如果它们真的撞上的话)。所以我怀疑是距离方面出了问题。求大神解答。
说明:a是公切线与竖直方向的夹角,bk,bl分别是两个小球原来的方向与竖直方向夹角,2abk就是2a+bk,2abl就是2a+bl,dx,dy是每个方向每次移动距离,vl,vk可以简单理解为速度,d是球心距
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
南阳一中分校是公办学校还是私立学校?教师工
雨菲儿化妆品这个地址在什么地方,我要处理点
用WORD编辑文档时,要求第一页有眉页,后面的
伊娜美容养生会所这个地址在什么地方,我要处
【ch3cocl】乙酰氯(CH3COCl)中碳的氧化数是(
低压阀门、中压阀门和和高压阀门怎么区分?
内存卡卡在打印机卡槽中取不出来怎么办?
韩泰轮胎服务中心在什么地方啊,我要过去处理
韵:达快递1000695675351
请问一下土豆,黄豆,绿豆,哪种食物主要给我
THE FARM THE BLACK PEARL STORY怎么样
皂巾的意思
鑫隆旅社地址在什么地方,想过去办事
各位朋友,我想请问一下现在学挖掘机要多少钱
最喜欢阿葵亚了,她会不会像丽萨娜一样回归啊
推荐资讯
我上的中专,毕业没给档案,现在学校倒闭了, 急
I、动物运动时,神经支配同侧下肢屈肌舒张活
考月嫂证难吗?考证大概要多少钱
吉祥门窗怎么去啊,有知道地址的么
一品串吧在什么地方啊,我要过去处理事情
我家罗威纳犬四个月了,感觉它特别的懒惰,白
弱弱问一句,谁知道招商信用卡,用户生日当天
网站有了数据库是不是就安全了,黑客攻击不了
江山如此大,何处是我家
200ft是什么意思
藜麦能用开水泡吗
(倾一世妖娆只为了你)应该配哪个情侣网名
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?