簡體   English   中英

如何檢測html5 canvas中半圓的碰撞?

[英]How to detect collision of half circle in html5 canvas?

我正在編寫兩個圓的碰撞檢測。 但是我真正想要的是主要對象只會在其一半的表面上與其他對象碰撞,如下圖所示:

在此處輸入圖片說明

半月板表面將與來自不同方向的其他圓碰撞。 我應該如何編寫函數來模擬呢?

我目前發現的兩個圓圈的檢測結果是這樣的:

var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);

if (distance < circle1.radius + circle2.radius) {
    // collision detected!
}

但是只有大約一半的主要圈子參與其中? 僅一小部分圓表面參與碰撞呢? 說僅Math.PI / 2度圓會檢測到碰撞嗎?

假設您用於檢測碰撞的代碼是正確的(我沒有對其進行測試),您要做的就是確定右邊的圓是哪個,以知道哪個會碰撞。

考慮到圖像中的半個圓是circle1。

if (distance < circle1.radius + circle2.radius) {
    // collision detected!
    if(circle1.x < circle2.x){
        // Circle collided on the right side of the other circle,
        // which means it's a real collision..
    }
}

那半圓可以旋轉嗎? 如果不是,那么這很容易:碰撞僅發生在右側,這意味着您只需要檢查half_circle_center.x_positionhalf_circle_center.x_position + half_circle.radius

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM