根据角度计算边界框上的点

时间:2018-08-30 03:14:44

标签: javascript math coordinates

好。我在数学上很烂!

我有一种情况,我想根据角度知道(x,y)在边界正方形上的位置。

0和360度的角度应笔直。

假设我们有一个(0,0,99,99)的边界平方,那么0度的角度将返回一个(49,0)点

45度角将返回(99,49)点

180度将产生(49,99),270将产生(0,49)并且360将返回(49,0)

我不知道如何计算。任何有关在哪里阅读以便于我学习的建议,将不胜感激。

更好的是伪代码,甚至是JavaScript中的某种东西。

谢谢, 迈克

1 个答案:

答案 0 :(得分:0)

最近,我只是用C#see also为这个问题提供了一个答案。

好吧,将它翻译成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>