У меня есть эта простая функция для set угол для вектора. Он эффективно получает текущую величину (длину) вектора, калибрует угол и преобразует угол от радианов в градусы. Затем я применяю угол к X и Y, и, наконец, умножая вектор на его исходную величину.Получение угла от вектора направления?
this.setAngle = function(degree){
var l = this.length(); //magnitude of vector
var angle = degree*Math.PI/180; //degress converted to radians
this.x=Math.cos(angle);
this.y=Math.sin(angle);
this.multiply(l); //original magnitude
return;
}
Однако я не уверен, как получить (получить) угол от вектора. Ниже приводится моя попытка:
this.getAngle = function(){
var angle = Math.atan(this.y/this.x); //radians
var degrees = angle/(180*Math.PI); //degrees
return Math.floor(degrees); //round number, avoid decimal fragments
}
Эта попытка не возвращает никакого значения, кроме 0 или -1.
Любые предложения?
Edit:
Правильный метод:
this.getAngle = function(){
var angle = Math.atan2(this.y, this.x);
var degrees = 180*angle/Math.PI;
return (360+Math.round(degrees))%360;
}
Это делает возвращает точный угол, я нахожу, однако, что она ограничена в 4 devisions 90 градусов? Чтобы уточнить: если реальный угол составляет 90 градусов, он вернется на 90 градусов, но если реальный угол равен 95 градусам, он вернет -85 градусов? – TheMintyMate
вы можете 'return (360 + Math.round (degrees))% 360' – Gavriel
Я считаю, что это работает, только он не выравнивается с 0 градусами, используемыми при настройке угла? Изображение консоли: [link] (http://i.imgur.com/zaao7jE.png?1) – TheMintyMate