裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

三次元空間における2点を通る直線

2020年11月18日 | ブログラミング
二次元における話を三次元に拡張し,sympy で解いてみた。

x-y-z の三次元空間で,x-y 平面(床面としよう)が鏡になっている。z 軸が正の方向(x-y 平面の上方向)からこの鏡にレーザー光を当てると反射する。
点 (a, b, c) = (5, 2, 3) からレーザー光を発射し,反射したレーザー光が点(d, e, f) = (-1, 5, 8) を通るようにするには,x-y 平面のどこを狙えばよいか((a, b, c) などは,x, y, z の順の座標値)。

from sympy import *
var('a, b, c, d, e, f, x, y, z')

eq1 = Eq((x - a) / (d - a), (z - c) / (f - c))
eq2 = Eq((y - b) / (e - b), (z - c) / (f - c))
eq1 = eq1.subs([(a, 5), (c, -3), (d, -1), (f, 8), (z, 0)])
eq2 = eq2.subs([(b, 2), (c, -3), (e,  5), (f, 8), (z, 0)])
solve([eq1, eq2], [x, y])




コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 数値計算の落とし穴(非常に... | トップ | モンテカルロ法により円周率... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事