0

私は2行あります:

y = -1/3x + 4
y = 3x + 85

交差点は にあり[24.3, 12.1]ます。

私は準備された座標のセットを持っています:

points = [[1, 3], [4, 8], [25, 10], ... ]
#y = -1/3x + b
m_regr = -1/3
b_regr = 4
m_perp = 3 #(1 / m_regr * -1)    

distances = []
points.each do |pair|
  x1 = pair.first
  y2 = pair.last
  x2 = ((b_perp - b_regr / (m_regr - m_perp))
  y2 = ((m_regr * b_perp) / (m_perp * b_regr))/(m_regr - m_perp)
  distance = Math.hypot((y2 - y1), (x2 - x1))
  distances << distance
end

これにはgemまたはより良い方法がありますか?

注: 上記の方法は機能しません。機能する解決策については、私の回答を参照してください。

4

3 に答える 3

1

少し数学を使うことの何が問題になっていますか?

あなたが持っている場合:

y = m1 x + b1
y = m2 x + b2

これは単純な線形方程式系です。

それらを解決すると、交差点は次のようになります。

x = (b2 - b1)/(m1 - m2)
y = (m1 b2 - m2 b1)/(m1 - m2)
于 2013-07-19T22:45:50.153 に答える
0

多くの苦労とさまざまな試行錯誤の末、機能するだけでなく劇的に単純化された単純な代数的方法をここで見つけました。

distance = ((y - mx - b).abs / Math.sqrt(m**2 + 1))

ここで、x と y は既知の点の座標です。

于 2013-07-19T23:49:09.580 に答える