Tag: 碰撞

每当我开始运行程序时如何制作随机位置?

我有一个随机移动的图像。 我的问题是每次我开始运行程序时,图像总是出现在左上角并移动一个对角线方向,在撞到墙壁后,它开始随机移动方向。 每次执行或运行程序时,如何使图像显示在随机位置? 任何帮助将非常感激… 这是代码: public class Ball extends JPanel implements Runnable { private Image ball; private Thread animator; private int x; private int y; private final int DELAY = 50; private int xVelocity = 1; private int yVelocity = 1; private static final int RIGHT_WALL = 400; private static final int LEFT_WALL = 1; […]

2d球碰撞问题:没有能量守恒

我正在尝试编写一个简单的物理模拟,其中具有不同半径和质量的球在完全弹性和无摩擦的环境中反弹。 我按照以下资源编写了自己的代码: http : //www.vobarian.com/collisions/2dcollisions2.pdf ,我也从这里测试了代码: Ball to Ball Collision – 检测和处理 编辑问题 在Rick Goldstein和Ralph的帮助下,我得到了我的代码(有一个错字……)。 非常感谢你的帮助。 但是我仍然感到困惑,为什么其他算法不适合我。 球以正确的方向反弹,但系统的总能量永远不会被保存。 速度越来越快,直到球刚开始在屏幕上的静态位置闪烁。 我实际上想在我的程序中使用这个代码,因为它比我写的那个简洁得多。 这是我写的function算法(虽然我确实从其他来源获取了第一位)。 它在泡泡类中: public void resolveCollision(Bubble b) { // get the minimum translation distance Vector2 delta = (position.subtract(b.position)); float d = delta.getMagnitude(); // minimum translation distance to push balls apart after intersecting Vector2 mtd = delta.multiply(((getRadius() […]

找到两个3D多边形的交集

也就是3D中的多边形裁剪算法 又找到2个碰撞多边形之间的碰撞流形 大多数用于多边形裁剪的算法都针对2D进行了详细描述,并且描述为可扩展到3D但没有细节。 例如sutherland-hodgman裁剪算法 我无法在互联网上找到任何3D实现或伪代码,我现在在这里问(并试图回答我自己的问题) 该算法将采用两种形状,如下所示: 并输出两个形状的交集,如下所示: 请注意,尽管Sutherland-Hodgman算法找到了两个多边形的交集,但它(和大多数其他多边形)在剪切多边形和剪切多边形之间进行了区分。 修剪的多边形可以是凹的或凸的,但是修剪的形状必须是凸的。 然而,我在扩展到3D时的实现要求两个形状都是凸的 ,这表明它不是真正的3D sutherland-hodgman算法和其他答案(使用任何算法)解除这个要求将非常感激

我在屏幕上绘制了两个正方形,如何检测两个对象边缘的碰撞?

现在,我可以比较X和Y来检查碰撞,但这只是两个物体在完全相同的X和Y位置上正好穿过彼此。 由于缺乏更好的术语,我需要更准确地检查碰撞,检查撇渣。 我有X,Y,X和Y标度的变量以及X和Y的速度。非常感谢任何帮助:D 编辑:广场!

libgdx动画内部的矩形 – collison检测 – 矩形

我正在写一个类似于口袋妖怪风格的RPG游戏(自上而下的视图)。 我现在正在研究碰撞检测问题。 我想基于矩形创建碰撞检测。 问题是我在绘制我之前设置的动画周围的矩形时遇到了困难。 我在谷歌和YouTube上搜索了如何处理这个问题的答案/教程但却一无所获。 Player.class public class Player { public Vector2 position; private float moveSpeed; private SpriteBatch batch; //animation public Animation an; private Texture tex; public TextureRegion currentFrame; private TextureRegion[][] frames; private float frameTime; public Player(Vector2 position){ this.position = position; moveSpeed = 5f; createPlayer(); } public void createPlayer(){ tex = new Texture(“Sprites/image.png”); frames = […]

如何检测重叠圆圈并相应填充颜色?

我使用3个数组(x,y和半径大小)创建了5个带有随机x和y坐标和半径的圆。 但是,我需要圆圈根据它们是否与另一个圆重叠来动态改变颜色。 因此,如果5个圆圈中的一个根本不重叠,则应将其涂成黑色。 重叠的圆圈应为青色。 如果它们的中心点之间的距离小于它们的半径之和,则认为两个圆重叠。 这是我到目前为止为圆圈类写的。 以下代码将在applet窗口中成功绘制5个圆,并成功计算距离,但问题在于着色。 颜色填充中似乎存在逻辑错误,我在这里看不到问题。 有什么建议? 非常感谢。 public class Circles extends Applet { public void paint(Graphics page) { Random locator = new Random(); int [] xpt = new int [5]; int [] ypt = new int [5]; int [] rad = new int [5]; setPreferredSize (new Dimension(300, 300)); for (int i = […]

Java String上哈希码溢出的后果

我最近在这里阅读了一些关于Java String类’哈希码的内容,并且我无法找到这些信息:当字符串的长度大于32时会发生什么(我知道会发生溢出,但是作为哈希键, 怎么了)? 例如,我需要散列长度在20到120个字符之间的字符串,以将它们用作散列键。 我是否需要使用BigInteger实现自己的算法? 另外,由于我可能有30k到80k之间的字符串,或许更多,通常的String hashcode是否足够无冲突?

椭圆碰撞检测无法正常工作

所以我正在尝试实现椭圆可以与圆形连接的测试,但它不起作用。 edist = (float) Math.sqrt( Math.pow((px + ((pwidth/2) )) – (bx + (bsize/2)), 2 ) + Math.pow(-((py + ((pwidth/2)) ) – (bx + (bsize/2))), 2 ) ); 这是完整的代码(需要Slick2D): import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.BasicGame; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Input; import org.newdawn.slick.SlickException; public class ColTest extends BasicGame{ float px = 50; float py = 50; […]

碰撞检测:圆形物体

我正在开发一个Java游戏(但开发语言并不重要),包括圆形物体,如球或冰球,现在正在进行碰撞。 我使用计时器,所以在每一帧我检查是否发生碰撞。 这是一个表示对象右上角的图形。 对象的中心由点[0,0]表示,其半径为10px,单位为像素。 现在,如果我的对象(例如, obj_1 )是方形/菱形(蓝线),要查找是否有另一个( obj_2 )碰撞它,我只需要获取它们的坐标并检查Math.abs(obj_1.x – obj_2.x) + Math.abs(obj_1.y – obj_2.y) <= radius我会知道是否有碰撞。 但问题是圆形(红线)更棘手,因为它需要更多的空间,这个占用的空间不受直线限制。 当然我必须舍入一些值(例如在上图中,如果我想在x = 2处检查碰撞,我将必须舍入y值,看起来像9.5到10)。 但我根本不知道如何获得这个公式。 任何帮助将非常感谢。

圆线交点

public static ArrayList getCircleLineIntersectionPoint(IntPoint pointA, IntPoint pointB, IntPoint center, int radius) { // returns a list of intersection points between a line which passes through given points, // pointA and pointB, and a circle described by given radius and center coordinate double disc, A, B, C, slope, c; double x1, x2, y1, y2; IntPoint point1, […]