Вычислить точку на ограничительной рамке на основе угла - PullRequest
0 голосов
/ 30 августа 2018

OK. Я сосу математику !!

У меня есть ситуация, когда я хотел бы узнать позицию (x,y) на ограничивающем квадрате на основе угла.

Угол 0 и 360 должен быть прямым вверх.

Если предположить, что у нас есть ограничивающий квадрат (0,0, 99,99), то угол 0 градусов вернет точку (49,0)

Угол 45 градусов вернул бы точку (99,49)

180 градусов даст (49, 99), 270 даст (0,49) и 360 вернется к (49,0)

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

Еще лучше было бы псевдокод или даже что-то в JavaScript.

Спасибо, Mike

1 Ответ

0 голосов
/ 30 августа 2018

Недавно я просто предоставил ответ на этот вопрос в C #, см. Также .

Ну, перевести его на JS - не сложная задача.

var c=document.getElementById("myCanvas");


var rect = c.getBoundingClientRect();
var center = [rect.x + rect.width / 2.0, rect.y + rect.height/2.0]

function calCoor(theta, a, b)
{
    var rad = theta * Math.PI / 180.0;
    var x, y;
    var tan = Math.tan(rad);
    if (Math.abs(tan) > b/ a)
    {
        x = tan > 0 ? a : -a;
        y = b / tan;
    } else
    {
        x = a * tan;
        y = tan < 0 ? b : -b;
    }
    return [x,y]
}
var angle = 90;
var random_post = calCoor(angle, rect.width / 2.0, rect.height/2.0)

console.log("Angle at: " + angle)
console.log("x at: " + (random_post[0] + center[0]))
console.log("y at: " + (random_post[1] + center[1]))
.square{
  width:100px;
  height:100px;
  border-style: solid;
}
<div class="square" id="myCanvas"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...