• 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();
        }
    }
  • 相关阅读:
    cogs 826. Feb11] GF打dota
    cogs 133. [USACO Mar08] 牛跑步 A*k短路算法
    luogu cogs 1437. [NOIP2013]转圈游戏
    RESTful
    中间件
    回顾基础知识,类,fbv,cbv
    Vue
    ES6的一些说明
    小试牛刀2
    小试牛刀
  • 原文地址:https://www.cnblogs.com/g398429959/p/4539838.html
Copyright © 2020-2023  润新知