当前位置:  开发笔记 > 编程语言 > 正文

圆的碰撞检测

如何解决《圆的碰撞检测》经验,为你挑选了1个好方法。

我有一个简单的Java小程序,有两个用户控制的球,使用绘制java.awt.我需要一种方法来检测它们之间的碰撞.我有一个检测墙壁碰撞的算法:

if (xPosition > (300 - radius)){
   xSpeed = -xSpeed; 
}
else if (xPosition < radius){
   xSpeed = -xSpeed; 
}
else if (yPosition > (300 - radius)) {
   ySpeed = -ySpeed;
}
else if (yPosition < radius){
   ySpeed = -ySpeed;
}
xPosition += xSpeed;
yPosition += ySpeed;

而对于第二球:

if (xPosition2 > (300 - radius)){
   xSpeed2 = -xSpeed2; 
}
else if (xPosition2 < radius){
   xSpeed2 = -xSpeed2; 
}
else if (yPosition2 > (300 - radius)) {
   ySpeed2 = -ySpeed2;
}
else if (yPosition2 < radius){
   ySpeed2 = -ySpeed2;
}
xPosition2 += xSpeed2;
yPosition2 += ySpeed2;

小程序是300像素乘300像素.

radius 存储圆的半径.

xPositionxPosition2存储两个球的x坐标.

yPositionyPosition存储两个球的y坐标,

xSpeedxSpeed2存储两个球的x速度.

ySpeedySpeed2存储两个球的y速度.

Beothorn.. 6

使用http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/Point2D.html,那里有一个距离法,如果它小于它们碰撞的半径.

编辑:错误,小于半径*2,对不起



1> Beothorn..:

使用http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/Point2D.html,那里有一个距离法,如果它小于它们碰撞的半径.

编辑:错误,小于半径*2,对不起

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有