Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вычисление радиан из 2 точек (https://javascript.ru/forum/misc/67387-vychislenie-radian-iz-2-tochek.html)

Artur2016 15.02.2017 10:56

Вычисление радиан из 2 точек
 
Вобщем есть 2 точки нужно узнать радианы на сколько нужно повернуть зеленую точку что бы луч указывал на красную. Меня уже долго мучает этот воппрос помогите сам не справлюсь.

Alexandroppolus 15.02.2017 11:05

арктангенс.

рони 15.02.2017 11:27

Artur2016,
rotateImg поворот изображения в сторону курсора

Paguo-86PK 15.02.2017 13:44

<html>
<script src='http://code.jquery.com/jquery-latest.min.js'></script>
<script>
function angleOf(x,y) { // Calculate angle of vector
    var a = [0,0,-2,-1,0,2,-3,4,2][(x < 0 ? 2 : x ? 1 : 0) + (y < 0 ? 6 : y ? 3 : 0)];
    return a < 0 ? -a * Math.PI / 2 : a * Math.PI / 2 + (x ? Math.atan(y / x) : Math.PI / 2);
}
function calculationeur(e) {
    document.getElementById("angle").innerHTML = Math.angleOf(e.clientY, e.clientX)
}
function maineur() {
    $("#paper").mousemove(function(event) {
        var x = event.pageX, y = event.pageY;
        var cx = 64, cy = 64;
        var msg = "Angle of (" + x + "," + y + ") about (" + cx + "," + cy + ") is " + ((36000 - Math.floor(angleOf(x - cx, y - cy) / Math.PI * 18000.0)) / 100);
        $("#angle").text(msg);
    });
}
</script>
<body onload='maineur()'>
<img id=paper style=background-color:cyan height=128px width=128px></img>
<span id=angle>???</span>°
</body>

Artur2016 15.02.2017 14:03

спасиб
а без библеотек на чистом js можно?

рони 15.02.2017 14:15

Artur2016,
:cray:
Math.atan2(y1-y2, x1-x2);

Paguo-86PK 15.02.2017 14:20

Цитата:

Сообщение от рони (Сообщение 444355)
Artur2016,
:cray:
Math.atan2(y1-y2, x1-x2);

Спасибо, у мeня, просто, вариант из "Основ интерактивной машинной графики" - книги 80-х с примерами на Бейсике.
Цитата:

Сообщение от Artur2016 (Сообщение 444351)
спасиб
а без библеотек на чистом js можно?

Тaк это и есть чистый js.
Здесь jQuery используется лишь под движение мыши. А сам угол вычисляется здесь:
function angleOf(x,y) { // Calculate angle of vector
    var a = [0,0,-2,-1,0,2,-3,4,2][(x < 0 ? 2 : x ? 1 : 0) + (y < 0 ? 6 : y ? 3 : 0)];
    return a < 0 ? -a * Math.PI / 2 : a * Math.PI / 2 + (x ? Math.atan(y / x) : Math.PI / 2);
}
Например, в вашем случае x1=100,y1=50 и x2=200,y2=25.
Тогда:
function angleOf(x,y) { // Calculate angle of vector
    var a = [0,0,-2,-1,0,2,-3,4,2][(x < 0 ? 2 : x ? 1 : 0) + (y < 0 ? 6 : y ? 3 : 0)];
    return a < 0 ? -a * Math.PI / 2 : a * Math.PI / 2 + (x ? Math.atan(y / x) : Math.PI / 2);
}
alert(angleOf( (200 - 100) , (25 - 50) ));

Artur2016 15.02.2017 14:48

все спасиб я разобрался:):)


Часовой пояс GMT +3, время: 05:06.