zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    AppDelegate动态加载StoryBoard
    带交互的 iOS 产品原型可以用什么软件制作?
    day06.1-module模块和包介绍
    day05.2-一个文件的增删改查实例
    day05.1-文件处理
    day04.4-装饰器
    day04.3-生成器
    day04.2-迭代器
    day04.1-三元表达式与列表解析
    day03.2-内置函数的使用
  • 原文地址:https://www.cnblogs.com/g398429959/p/4539838.html
Copyright © 2011-2022 走看看