LOG

ベクトル操作

力の合成

力を合成するには2つのベクトルからなる平行四辺形を作成すればよい。

// ============================
// 計算に必要な値
// ============================
let p1  = 2;                   // 力1
let p2  = 2;                   // 力2
let rad = 120 * Math.PI / 180; // 2つのベクトルの角度(ラジアン)
// ============================

let _y = p1 * Math.sin(rad);      // 高さ
let _x = p1 * Math.cos(rad) + p2; // 長さ

// ------------------------------------
// 合力
// ------------------------------------
let p3 = Math.sqrt( Math.pow(_y,2) + Math.pow(_x,2) );
// -> 2

// ------------------------------------
// 合力の向き
// ------------------------------------
let p3r = Math.atan2(_y,_x);   // 合力の向き(ラジアン)
// -> 1.0471975511965976

let p3d = p3r / Math.PI * 180; // 合力の向き(度)
// -> 60

力の分解

並行四辺形で考えると良い。

// ============================
// 計算に必要な値
// ============================
let p3  = 2;                   // 合力
let p3r = 60 * Math.PI / 180;  // 合力の向き(ラジアン)
let rad = 120 * Math.PI / 180; // 2つのベクトルの角度(ラジアン)
// ============================

// 高さ
let p1 = p3 * Math.sin(p3r) / Math.sin(rad);
// -> 2

// 合力の場合、長さはp2とp1*Math.cos(rad)を足したものだったので
let p2 = ( p3 * Math.cos(p3r) ) - p3 * Math.sin(p3r) / Math.tan(rad);
// -> 2