基点から見た観測点の角度を取得します(=線の角度)。

 

function getPtAngle(basePoint, observePoint, mode) {
    if (mode < 2) {
        var a = observePoint[0] - basePoint[0];
        var b = observePoint[1] - basePoint[1];
        var rad = Math.atan(b / a);
        var angle = 90 - rad * 180 / Math.PI;
        var n = a < 0 ? 180 : 0;
    } else {
        var a = observePoint[1] - basePoint[1];
        var b = observePoint[0] - basePoint[0];
        var rad = Math.atan(b / a);
        var angle = 90 + rad * 180 / Math.PI;
        var n = a > 0 ? 180 : 0;
    }
    if (mode == 0 || mode == 2) {
        angle += n;
    } else {
        angle -= n;
    }
    return angle;
}

 

<引数>

basePoint: 基点 [x, y]

observePoint: 観測点 [x, y]

mode: 計測軸

 mode=0 垂直を0度として時計回りの角度(0~360)

 mode=1 垂直を0度として時計回りがプラス、反時計回りがマイナスの角度(-180~180)

 mode=2 水平を0度として反時計回りの角度(0~360)

 mode=3 水平を0度として時計回りがマイナス、反時計回りがプラスの角度(-180~180)

 

<例> 

var res = getPtAngle([0, 0], [-86.603, 50], 0);

var res = getPtAngle([0, 0], [-86.603, 50], 1);

var res = getPtAngle([0, 0], [-86.603, 50], 2);

var res = getPtAngle([0, 0], [-86.603, 50], 3);

 

 

Joomla templates by a4joomla