直線の片側を基点として回転させたときにできる円軌道の座標を返します(=線の回転)。

 

function rotatePoint(basePoint, movingPoint, angle) {
    var angle = angle % 360; //360度以内に
    var x = movingPoint[0] - basePoint[0];
    var y = movingPoint[1] - basePoint[1];
    var rad = Math.atan(y / x); //現在の角度(ラジアン)
    var a = angle * (Math.PI / 180); //回転角度をラジアンに変換
    var d = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); //距離
    var resX = d * Math.sin(rad - a) + basePoint[0];
    var resY = d * Math.cos(rad - a) + basePoint[1];
    return [resX, resY];
}

 

<引数>

basePoint: 基点 [x, y]

movingPoint: 移動させる点 [x, y]

angle: 回転角度(-360~360)

 

<例>

var res = rotatePoint([0, 0], [86.603, 50], 60); //≒[86.603, -50]

 

Joomla templates by a4joomla