求空間平面與直線的交點


問題重述與幾何模型

已知P1(x1,y1,z1),P2(x2,y2,z2),平面α:ax+by+cz+d=0,求直線P1P2與平面α的交點P。

 

數學分析

存在性:直線與平面的交點可能有零個,一個,或無數個。 
可行性:已知直線上不重合兩點,可以確定一條直線,已知直線與平面,則一定可以得到兩者之間的關系。

向量法

當已知平面的一般式方程時(ax+by+cz+d=0),n⃗ =(a,b,c)就是平面的法矢量,也就能夠很容易求出點到平面的距離和一個向量到法矢量的投影。由前面的幾何模型,我們容易得出(根據相似三角形原理):

其中:

又點P1到D2的距離為

 

上面過程主要使用向量運算,巧妙避開了求模運算中的開方運算,減少了很多的運算量,而且,容易步驟化,易於編程實現。

 

Python代碼實現:

 

import numpy as np

p1 = np.array([x1,y1,z1])#
p2 = np.array([x2,y2,z2])
plane_normal = np.array([a,b,c]) #a,b,c,d平面方程系數

P1D = (np.vdot(p1,plane_normal)+d)/np.sqrt(np.vdot(plane_normal,plane_normal))

P1D2 = (np.vdot(p2-P1,plane_normal))/np.sqrt(np.vdot(plane_normal,plane_normal))

n = P1D2/P1D

p = p1 + n*(p2- p1)#所求交點

 

原文鏈接:http://blog.csdn.net/smallflyingpig/article/details/51234711?locationNum=8&fps=1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM