Ответы пользователя по тегу Тригонометрия
  • Преобразование угла (0-360) в точки x1,y1,x2,y2 и обратно?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Исправил под Вашу ситуацию

    // получаем угол в радианах
    var angle = Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50); 
    
    // или в градусах
    var angle = 180*Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50)/Math.PI;


    PS: немного теории на примерах

    преобразование декартовых координат в полярные
    есть некая точка, заданная координатами x,y в декартовой системе координат. для вычисления ее полярных координат используем формулы
    // угол между осью X и отрезком, заданным координатами (0,0)-(x,y)
    var angle = Math.atan2(x,y); // в радианах
    var angle = 180*Math.atan2(x,y)/Math.PI; // в градусах
    
    // длинна отрезка (сежду точкми 0,0 и x,y)
    var radius = Math.sqrt( Math.pow(x, 2) + Math.pow(y, 2) );


    преобразование полярных координат в декартовы
    есть некая точка, заданная координатами angle, radius в полярной системе координат. для вычисления ее декартовых координат используем формулы
    // угол angle задан в радианах
    var x = radius*Math.cos(angle); 
    var y = radius*Math.sin(angle);


    векторные преобразования (самая малость)
    вариант 1. есть некий отрезок (вектор) заданный декартовыми координатами точек (начала и конца) x1,y1 и x2,y2 соответственно.
    // угол между осью X и отрезком, заданным координатами (x1,y1)-(x2,y2), он же направление вектора.
    var angle = Math.atan2(x2-x1,y2-y1); // в радианах
    var angle = 180*Math.atan2(x2-x1,y2-y1)/Math.PI; // в градусах
    
    // длинна отрезка, заданного координатами (x1,y1)-(x2,y2), он же длина (размер) вектора
    var radius = Math.sqrt( Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2) );


    вариант 2. есть некий отрезок (вектор) заданный декартовыми координатами точки (начала) x1,y1 и полярными координатами точки конца - angle и radius, указывающими направление отрезка и его длинну, относительно точки начала x1,y1.
    // находим декартовы координаты точки конца. угол angle задан в радианах
    var x2 = x1+radius*Math.cos(angle); 
    var y2 = y1+radius*Math.sin(angle);
    Ответ написан
    23 комментария