将线方程解转换为具有未知 x 和 y 的可重用 javascript 函数
Convert equations of lines solution into reusable javascript function with unknown x and y
所以我有一个解决方案,可以根据这些地标的地标角度 (312.27) 和 (19.65) 度以及网格坐标 (1,5) 和 (9,7) 来求解某人的位置(交点) .所以我遇到的问题是如何将这些公式转换成可以动态插入角度和网格坐标以及 return 位置的 x 和 y 交点的东西?
Equations of the Lines based on land marks:
P1: y = cot(312.27)*x + 5 - cot(312.27)*1 ⇒ y = -0.91x + 5.91
P2: y = cot(19.65)*x + 7 - cot(19.65) * 9 ⇒ y = 2.80x - 18.21
solve point of intersection:
P1 = P2
-0.91x + 5.91 = 2.80x - 18.21
5.91 + 18.21 = 2.80x + 0.91x
24.12 = 3.71x
6.5 = x
y = -0.91(6.5) + 5.91
y = 0
Your position is (6.5,0).
所以我正在考虑创建一个像这样的函数:
function getLocation(angle1, angle2, coord1, coord2){}
但我只是无法弄清楚如何将此解决方案转换为可以输出 x 和 y 的解决方案。因为我必须传递未知的 x 或 y。
如有任何想法,我们将不胜感激。
注意:角度转换为弧度。
您需要根据角度和 x,y 坐标求解方程组:
// let phi1 be the first angle and phi2 be the second angle thus
// let P1 be the first point and P2 be the second point
y = x * cot(phi1) + P1.y - P1.x * cot(phi1)
Similarly
y = x * cot(phi2) + P2.y - P2.x * cot(phi2)
Equating both sides:
x * cot(phi1) + P1.y - P1.x * cot(phi1) = x * cot(phi2) + P2.y - P2.x * cot(phi2)
Solving for x
x * (cot(phi1) - cot(phi2)) = P2.y - P2.x * cot(phi2) - P1.y + P1.x * cot(phi1)
Thus:
x = (P2.y - P2.x * cot(phi2) - P1.y + P1.x * cot(phi1)) / (cot(phi1) - cot(phi2))
Once you get x you can plug x in any of the equations for y:
y = x * cot(phi1) + P1.y - P1.x * cot(phi1)
所以要得到 x 和 y:
function getLocation(angle1, angle2, coord1, coord2) {
let num = coord2.y - coord2.x * cot(angle2) - coord1.y + coord1.x * cot(angle1)
let den = cot(angle1) - cot(angle2)
let x = num / den
let y = x * cot(angle1) + P1.y - P1.x * cot(angle1)
// do something awesome with x and y
}
所以我有一个解决方案,可以根据这些地标的地标角度 (312.27) 和 (19.65) 度以及网格坐标 (1,5) 和 (9,7) 来求解某人的位置(交点) .所以我遇到的问题是如何将这些公式转换成可以动态插入角度和网格坐标以及 return 位置的 x 和 y 交点的东西?
Equations of the Lines based on land marks:
P1: y = cot(312.27)*x + 5 - cot(312.27)*1 ⇒ y = -0.91x + 5.91
P2: y = cot(19.65)*x + 7 - cot(19.65) * 9 ⇒ y = 2.80x - 18.21
solve point of intersection:
P1 = P2
-0.91x + 5.91 = 2.80x - 18.21
5.91 + 18.21 = 2.80x + 0.91x
24.12 = 3.71x
6.5 = x
y = -0.91(6.5) + 5.91
y = 0
Your position is (6.5,0).
所以我正在考虑创建一个像这样的函数:
function getLocation(angle1, angle2, coord1, coord2){}
但我只是无法弄清楚如何将此解决方案转换为可以输出 x 和 y 的解决方案。因为我必须传递未知的 x 或 y。
如有任何想法,我们将不胜感激。
注意:角度转换为弧度。
您需要根据角度和 x,y 坐标求解方程组:
// let phi1 be the first angle and phi2 be the second angle thus
// let P1 be the first point and P2 be the second point
y = x * cot(phi1) + P1.y - P1.x * cot(phi1)
Similarly
y = x * cot(phi2) + P2.y - P2.x * cot(phi2)
Equating both sides:
x * cot(phi1) + P1.y - P1.x * cot(phi1) = x * cot(phi2) + P2.y - P2.x * cot(phi2)
Solving for x
x * (cot(phi1) - cot(phi2)) = P2.y - P2.x * cot(phi2) - P1.y + P1.x * cot(phi1)
Thus:
x = (P2.y - P2.x * cot(phi2) - P1.y + P1.x * cot(phi1)) / (cot(phi1) - cot(phi2))
Once you get x you can plug x in any of the equations for y:
y = x * cot(phi1) + P1.y - P1.x * cot(phi1)
所以要得到 x 和 y:
function getLocation(angle1, angle2, coord1, coord2) {
let num = coord2.y - coord2.x * cot(angle2) - coord1.y + coord1.x * cot(angle1)
let den = cot(angle1) - cot(angle2)
let x = num / den
let y = x * cot(angle1) + P1.y - P1.x * cot(angle1)
// do something awesome with x and y
}