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