Java之碰撞检测


1.简介:

碰撞检测是计算机图形学和虚拟现实中最基本且非常重要的组成部分。它主要应用于:虚拟制造、CAD/CAM、计算机动画、物理建模、三维游戏、飞机和汽车驾驭模拟、机器人、路径和运动规划、装配。

2.碰撞处理:

碰撞检测(Collision  Detection):返回两个或多个物体是否发生碰撞的布尔判断。

碰撞确定(Collision  Determination):找到物体之间实际相交位置。

碰撞响应(Collision  Response):针对两个物体之间的碰撞决定采取何种操作。

/** * 碰撞检测测试,判断两个圆是否会发生碰撞 * */
public class RectangleRiclesDemo extends JFrame implements Runnable { private static final long serialVersionUID = 1L; /* 定义两圆左上角坐标、半径 */
    private int x1 = 15, y1 = 45; private int x2 = 35, y2 = 70; private int r1 = 16, r2 = 18; public RectangleRiclesDemo() { setTitle("碰撞检测"); setSize(200, 600); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } @Override public void paint(Graphics g) { /* 画圆 */ g.drawOval(x1, y1, 2 * r1, 2 * r1); g.drawOval(x2, y2, 2 * r2, 2 * r2); } @Override public void run() { /* 判断两圆是否相交 */
        // 两圆中心坐标
        int centerX1 = x1 + r1, centerY1 = y1 + r1; int centerX2 = x2 + r2, centerY2 = y2 + r2; // 求两圆的圆心距
        double length = Math.sqrt(Math.pow(centerX1 - centerX2, 2) + Math.pow(centerY1 - centerY2, 2)); // 判断圆心距与两圆半径和的关系
        if (length < (r1 + r2)) { JOptionPane.showMessageDialog(null, "圆心距:" + length + ",碰撞了"); } else { JOptionPane.showMessageDialog(null, "圆心距:" + length + ",未碰撞"); } } public static void main(String[] args) { new Thread(new RectangleRiclesDemo()).start(); } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM