Проверьте на столкновение между кругом и периметром сектора круга - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать функцию, которая проверяет, нет ли столкновения / пересечения между кругом и периметром сектора круга.

Я собираюсь объяснить мою проблему более подробно:
1. У меня есть сектор круга, определенный центральной точкой (x1, y1), радиусом (r1) и углом (м)это говорит мне, где сектор круга начинается и заканчивается.
2. С другой стороны, у меня есть круг, определенный центральной точкой (x2, y2), радиусом (r2).
3. Ясоздание небольшой игры на холсте HTML5, в которой обе эти геометрические фигуры могут свободно перемещаться.
4. Проблема в том, что я хочу знать, сталкиваются ли эти два (сектор зеленого круга и зеленый круг) друг с другом.

enter image description here

Мой текущий код очень прост (поскольку я не могу придумать что-то, что может эффективно проверить столкновение).Он только проверяет столкновение между кругом, который определяет этот сектор круга, и другим кругом:

this.crashWith = function(otherobj) {
    // "this" is the circle
    // "otherobj" is the circle sector
    var dx = this.x - otherobj.x;
    var dy = this.y - otherobj.y;
    var distance = Math.sqrt(dx * dx + dy * dy);
    var crash = false;
    if (distance < this.radius +otherobj.radius) {
        crash = true;
    }
    return crash;
}

Примечание. Сектор круга (зеленого цвета) имеет ширину линии (как видно на изображении) иугол m изменяется (потому что круговой сектор вращается вокруг центра).

Я думаю, что правильным решением было бы то, что может вычислить столкновения, зная, что форма сектора круга не меняется (она только вращается).

1 Ответ

0 голосов
/ 25 октября 2018

Похоже, у вас есть четкое понимание геометрии ...
Вы уже используете Пифагора, чтобы определить, сталкиваются ли круги.

Чтобы обнаружить столкновение головы, вам нужно включить углы в ваше состояниесм. изображение ниже:

enter image description here

Когда угол c больше a и меньше b, вы получаете голову при столкновении,

Далее будет выяснено боковое столкновение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...