3次元空間における直線と点の距離

Finding the closest point to lines in 3D in Python – StackOverflow

直線と点の距離は,平面でも3次元空間でも外積を用いれば同様に解く事ができる.
(4次元以上になると,numpy.cross()では解けない;2,3次元のみ)

import numpy as np

x1, y1, z1 = 2, 2, 2
x2, y2, z2 = 6, 4, 2
x3, y3, z3 = 4, 5, 2
u = np.array([x2 - x1, y2 - y1, z2-z1])
v = np.array([x3 - x1, y3 - y1, z3-z1])
L = np.linalg.norm(np.cross(u, v) / np.linalg.norm(u))
print(L)

1.788854382

参考:
2点を通る直線から離れた位置にある点までの距離を求める – 偏った言語信者の垂れ流し
 
 
 
質問のやつは,どうも「vectors」は方向ベクトルを表していて,
「points」はx0, y0, z0を表しているっぽい.
なので,「points」ともう1点適当に求めてあげて,
(例えば「points + t*vectors (t=1)」とか)
それで求まる直線に対して,調べたい各点の距離を比較してあげれば,
質問の問題は解決される.

広告
カテゴリー: 未分類 パーマリンク

3次元空間における直線と点の距離 への1件のフィードバック

  1. ピンバック: 4次元空間における直線と点の距離 | 粉末@それは風のように (日記)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中