【发布时间】:2017-12-19 18:17:58
【问题描述】:
最近,我们被指派为在 GUI 界面中像机器人一样工作的多个圆圈编写代码。基本上,一个机器人模拟器。
我有代码可以在多个圈子中生成,这些圈子可以像机器人一样工作。
这是我当前用于检测机器人与正方形末端之间的墙壁碰撞的代码:
private void checkCollisions(double maxX, double maxY) {
for (ListIterator<Ball> slowIt = balls.listIterator(); slowIt.hasNext();) {
Ball b1 = slowIt.next();
// check wall collisions:
double xVel = b1.getXVelocity();
double yVel = b1.getYVelocity();
if ((b1.getCenterX() - b1.getRadius() <= 0 && xVel < 0)
|| (b1.getCenterX() + b1.getRadius() >= maxX && xVel > 0)) {
b1.setXVelocity(-xVel);
}
if ((b1.getCenterY() - b1.getRadius() <= 0 && yVel < 0)
|| (b1.getCenterY() + b1.getRadius() >= maxY && yVel > 0)) {
b1.setYVelocity(-yVel);
}
for (ListIterator<Ball> fastIt = balls.listIterator(slowIt.nextIndex()); fastIt.hasNext();) {
Ball b2 = fastIt.next();
final double deltaX = b2.getCenterX() - b1.getCenterX() ;
final double deltaY = b2.getCenterY() - b1.getCenterY() ;
if (colliding(b1, b2, deltaX, deltaY)) {
bounce(b1, b2, deltaX, deltaY);
}
}
}
}
b1.setXVelocity(-xVel);
b1.setYVelocity(-yVel);
是使圆圈从墙上反弹回来的主要部分。但是,我希望球能够检测到墙壁并旋转 90 度,而不是像弹跳球那样从墙壁反弹回来。
我们将不胜感激任何帮助或可以为我执行此操作的工作代码。我有一个名为“balls”的所有球的 AraryList。
如果需要,我可以提供源代码。
这是我目前所拥有的。但是我需要每个球都连接一个传感器,以检测前面是否有墙。
【问题讨论】:
标签: java user-interface collision simulator robot