2012年6月11日 星期一

法向量

高中的數學  都忘記了  

(1)寫出2X-3=0的法向量
我寫(2,0,0)  解答是(1,0,0)
 

(2)寫出Z=0(xy平面)的法向量
我寫(0,0,0)  解答是(0,0,1)


1.
第一題是對的
法向量關鍵在於他的方向而非在於大小長度
所以您寫的(2,0,0和解答的(1,0.0)是一樣的
都是法向量只不過長短不一樣罷了


2.
您寫的答案就有些問題了
您寫的(0.0.0)代表的是零向量
意思是不代表任何向量

而垂直於XY平面的線條您可以自己畫畫看阿
就是Z軸阿
所以答案就是(0.0.1)了




从理论上说,空间零向量是任何平面的法向量,但是由于零向量不能表示平面的信息。
一般不选择零向量为平面的法向量。

如果已知直线与平面垂直,可以取已知直线的两点构成的向量作为法向量;
如果不存在这样的直线,可用设元法求一个平面的法向量;
步骤如下:
首先设平面的法向量m(x,y,z),
然后寻找平面内任意两个不平行的向量AB(x1,y1,z1)和CD(x2,y2,z2)。

由于平面法向量垂直于平面内所有的向量,因此得到
x*x1+y*y1+z*z1=0
和x*x2+y*y2+z*z2=0。

由于上面解法存在三个未知数两个方程
(不能通过增加新的向量和方程求解,
因为其它方程和上述两个方程是等价的),
无法得到唯一的法向量(因为法向量不是唯一的)。
为了得到确定法向量,可采用固定z=1(也可以固定x=1或y=1)
或者模等于1的方法(单位法向量),但是这步并不是必须的。
因为确定法向量和不确定法向量的作用是一样的。   

平面法向量的具体步骤:(待定系数法)   
1、建立恰当的直角坐标系   
2、设平面法向量n=(x,y,z)   
3、在平面内找出两个不共线的向量,记为a=(a1,a2, a3) b=(b1,b2,b3)   
4、根据法向量的定义建立方程组①n*a=0 ②n*b=0   
5、解方程组,取其中一组解即可。



由一點和一個法向量決定的平面

對於一點 P_0 = (x_0,y_0,z_0) 和一個向量 \vec{n} = (a, b, c) ,平面方程為
 ax + by + cz = a x_0 + b y_0 + c z_0
這是穿過點 P_0 並垂直於向量\vec{n}的平面。

通過三點的平面

穿過三點 P_1 = (x_1,y_1,z_1) ,  P_2 = (x_2,y_2,z_2)  P_3 = (x_3,y_3,z_3) 的平面的方程可以表述為如下行列式:
 \begin{vmatrix} x - x_1 & y - y_1 & z - z_1 \\
x_2 - x_1 & y_2 - y_1& z_2 - z_1 \\
x_3 - x_1 & y_3 - y_1 & z_3 - z_1 \end{vmatrix} = 0

一點到平面的距離

對於一點 P_1 = (x_1,y_1,z_1) 和一個平面ax + by + cz + d = 0,從點 P_1 到平面的距離是:
 D = \frac{\left | a x_1 + b y_1 + c z_1+d \right |}{\sqrt{a^2+b^2+c^2}}

兩個平面的夾角

兩個相交平面的夾角,稱為兩面角(dihedral angle),可以用平面方程a_1 x + b_1 y + c_1 z + d_1 = 0a_2 x + b_2 y + c_2 z + d_2 = 0給出如下:
 \cos {(\alpha)} = \frac{a_1 a_2 + b_1 b_2 + c_1 c_2}{\sqrt{a_1^2+b_1^2+c_1^2}\sqrt{a_2^2+b_2^2+c_2^2}} .








Given the plane
enter image description here
Then the normal vector is
enter image description here
The normal unit vector n is given by:
enter image description here
Therefore, for the plane 5x+2y+3z-1=0,
The normal vector N is
N = [5,2,3]
The magnitude |N| is
|N| = sqrt(5^2 + 2^2 + 3^2)
|N| = 6.1644
The normal unit vector n is therefore approximately:
n = N / |N|
n = [0.8111, 0.3244, 0.4866]
which you can check by measuring the length of n.


Code:
 
import math

def mag(V):
  return math.sqrt(sum([x*x for x in V]))
def n(V):
  v_m = mag(V)
  return [ vi/v_m for vi in V]

N = [ 5, 2, 3]
print mag(N)
print n(N)
print mag(n(N))
Result:
6.16441400297
 
[0.81110710565381272, 0.32444284226152509, 0.48666426339228763]
 
1.0

 
 
 
 
 
 

沒有留言: