小项目:两个小球相撞!

yesoft 2002-01-24 09:10:03
用TC做两个小球,碰四壁反弹,相撞时反弹(遵守动量守恒定律)!我的作业题,太复杂,求助!
...全文
408 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesoft 2002-01-26
  • 打赏
  • 举报
回复
感谢cshchina(神仙),碰四壁的情况解决我已经,算法与你的相同,但是关健是两个小球相撞时要求实现类似台球效果,(正撞,斜撞),反弹效果要求符合动量守衡,动能守衡.难点在于反弹后的角度,速度的确定.请各位帮忙!
cshchina 2002-01-25
  • 打赏
  • 举报
回复
同意Elminster()
struct ball
{
int dx;
int dy;
int x;
int y;
};
dx 和 dy可看作是小球单位时间里移动的像素点的个数
x,y是坐标,当x到达边界时ball.dx=-ball.dx;
当y到达边界时ball.dy=-ball.dy;
用circle();画出球并给以颜色;移动时在原来的地方用背景色画球隐藏就行了
用delay(int );延时就行了





 
Elminster 2002-01-25
  • 打赏
  • 举报
回复
动能应该也要守恒,否则不好算。

基本思路应该是为小球建立一个描述其速度矢量的结构,比如:

struct v
{
double vx;
double vy;
};

然后根据时间和小球速度矢量来确定小球位置。发生碰撞就要修改速度矢量,撞墙比较简单,撞水平墙 vy 变号,撞垂直墙 vx 变号。小球相撞比较烦,要根据小球半径计算相撞时两球球心位置,然后以球心连线方向确定碰撞对速度矢量的影响,再注意速度矢量的长度不变(假设弹性碰撞,不损失动能)。
Elminster 2002-01-25
  • 打赏
  • 举报
回复
动能也要守恒才行吧?否则相撞后不能完全确定小球的速度。

基本的思路应该是为每个球建立一个描述速度矢量的结构。撞墙比较简单,只要把速度矢量中的一个分量变号就行了。两球相撞比较讨厌,要根据半径确定碰撞时两球的球心位置,然后以球心连线方向确定相撞时弹力方向,将碰撞视为小球的速度矢量在弹力方向上加了一个速度矢量。然后相撞后新的速度矢量应该和原来的矢量长度相同(假定不损失能量,弹性碰撞)。
chen_jun_fen 2002-01-25
  • 打赏
  • 举报
回复
首先确定球的运动边界,碰到边界,返回,

确定球的运动路径
techboy 2002-01-24
  • 打赏
  • 举报
回复
关注
hello_wyq 2002-01-24
  • 打赏
  • 举报
回复
这个也叫复杂,昏到!
liangsiyuan 2002-01-24
  • 打赏
  • 举报
回复
看看图形学的书吧
yesoft 2002-01-24
  • 打赏
  • 举报
回复
cnss 2002-01-24
  • 打赏
  • 举报
回复
当两个球相碰时,把球看成球还是点?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧