TA学习之路——1.2向量

数学基础——向量 详解

1. 什么是向量

在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。

2. 向量的表示方式

·代数表示
大小或小写字母+箭头:
A →   或   b →         A B →   或   a b → \overrightarrow{A}\ \ 或\ \ \overrightarrow{b} \ \ \ \ \ \ \ \overrightarrow{AB}\ \ 或\ \ \overrightarrow{ab} A     b        AB     ab
·几何表示
1.二维
二维
2.三维
在这里插入图片描述

坐标表示
1.二维
分别取与x轴、y轴方向相同的两个单位向量i,j作为一组基底。有且只有一对实数(x,y),使得a=xi+yj,因此把实数对(x,y)叫做向量a的坐标,记作a=(x,y)。
A → = ( a x , a y )    ,    B → = ( b x , b y ) \overrightarrow{A}=(a_x,a_y)\ \ ,\ \ \overrightarrow{B}=(b_x,b_y) A =(ax,ay)  ,  B =(bx,by)
2.三维
分别取与x轴、y轴,z轴方向相同的3个单位向量i,j,k作为一组基底。有且只有一组实数(x,y,z),使得a=ix+jy+kz,因此把实数对(x,y,z)叫做向量a的坐标,记作a=(x,y,z)。
A → = ( a x , a y , a z )    ,    B → = ( b x , b y , b z ) \overrightarrow{A}=(a_x,a_y,a_z)\ \ ,\ \ \overrightarrow{B}=(b_x,b_y,b_z) A =(ax,ay,az)  ,  B =(bx,by,bz)

矩阵表示
1.二维
A → = [ a x a y ]     B → = [ b x b y ] \overrightarrow{A}= \begin{bmatrix} a_x \\ a_y \end{bmatrix}\ \ \ \overrightarrow{B}= \begin{bmatrix} b_x \\ b_y \end{bmatrix} A =[axay]   B =[bxby]
2.三维
A → = [ a x a y a z ]     B → = [ b x b y b z ] \overrightarrow{A}= \begin{bmatrix} a_x \\ a_y\\ a_z \end{bmatrix}\ \ \ \overrightarrow{B}= \begin{bmatrix} b_x \\ b_y\\ b_z \end{bmatrix} A = axayaz    B = bxbybz

3. 向量的基本定义

·向量是有大小和方向的有向线段
·向量没有位置,只有大小和方向
·向量的箭头是向量的结束,向量的开始
·向量描述的位移能被认为是与轴平行的位移序列

代码实现:
二维

public struct M_Vector2
{
    public float x;
    public float y;
    public M_Vector2(float x,float y)
    {
        this.x = x;
        this.y = y;
    }
}

三维

public struct M_Vector3
{
    public float x;
    public float y;
    public float z;
    public M_Vector3(float x,float y,float z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

4. 向量的运算

设 a → = ( a x , a y )   ,   b → = ( b x , b y ) 设\overrightarrow{a}=(a_x,a_y) \ , \ \overrightarrow{b}=(b_x,b_y) a =(ax,ay) , b =(bx,by)
4.1加法
向量的加法满足平行四边形法则和三角形法则, O A → + O B → = O C →   a = [ a x a y ]    ,    b = [ b x b y ]   a + b = [ a x + b x a y + b y ] = [ a x + b x a y + b y ] [ 1 1 ]   a + 0 = 0 + a   交换律: a + b = b + a   结合律:( a + b ) + c = a + ( b + c ) 向量的加法满足平行四边形法则和三角形法则, \\ \overrightarrow{OA}+\overrightarrow{OB}=\overrightarrow{OC} \\ \ \\ a= \begin{bmatrix} a_x \\ a_y \end{bmatrix}\ \ , \ \ b= \begin{bmatrix} b_x \\ b_y \end{bmatrix} \\ \ \\ a + b = \begin{bmatrix} a_x + b_x\\ a_y + b_y \end{bmatrix}= \begin{bmatrix} a_x + b_x\\ a_y + b_y \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} \\ \ \\ a+0 = 0+ a \\ \ \\ 交换律:a+b=b+a \\ \ \\ 结合律:(a+b)+c=a+(b+c) 向量的加法满足平行四边形法则和三角形法则,OA +OB =OC  a=[axay]  ,  b=[bxby] a+b=[ax+bxay+by]=[ax+bxay+by][11] a+0=0+a 交换律:a+b=b+a 结合律:(a+b+c=a+(b+c)
代码实现:
二维

    /// 两个向量相加
    public static M_Vector2 operator+(M_Vector2 m_Vector2_A,M_Vector2 m_Vector2_B)
    {
        return new M_Vector2(m_Vector2_A.x + m_Vector2_B.x, m_Vector2_A.y + m_Vector2_B.y);
    }

三维

//加法
    public static M_Vector3 operator +(M_Vector3 v3_A,M_Vector3 v3_B)
    {
        return new M_Vector3(v3_A.x + v3_B.x, v3_A.y + v3_B.y, v3_A.z + v3_B.z);
    }

4.2 减法
如果a、b是互为相反的向量,那么a=-b,b=-a,a+b=0.
0的反向量为0。
O A → − O B → = B A →   a = ( a x , a y ) , b = ( b x , b y ) ,   a − b = ( a x − b x , a y − b y ) . \overrightarrow{OA}-\overrightarrow{OB}=\overrightarrow{BA} \\ \ \\ a=(a_x,a_y),b=(b_x,b_y) , \\ \ \\ a-b=(a_x-b_x,a_y-b_y). OA OB =BA  a=(ax,ay)b=(bx,by) ab=(axbx,ayby).

加减变换律:a+(-b)=a-b
代码实现:
二维

    /// 两个向量相减
    public static M_Vector2 operator -(M_Vector2 m_Vector2_A, M_Vector2 m_Vector2_B)
    {
        return new M_Vector2(m_Vector2_A.x - m_Vector2_B.x, m_Vector2_A.y - m_Vector2_B.y);
    }

三维

    //减法
    public static M_Vector3 operator -(M_Vector3 v3_A, M_Vector3 v3_B)
    {
        return new M_Vector3(v3_A.x - v3_B.x, v3_A.y - v3_B.y, v3_A.z - v3_B.z);
    }

4.3 数乘
实数λ和向量a的叉乘乘积是一个向量,记作λa,且|λa|=|λ|*|a|。

当λ>0时,λa的方向与a的方向相同;
当λ<0时,λa的方向与a的方向相反;
当λ=0时,λa=0,方向任意。
当a=0时,对于任意实数λ,都有λa=0。

注: 按定义知,如果λa=0,那么λ=0或a=0。
实数λ叫做向量a的系数,乘数向量λa的几何意义就是将表示向量a的有向线段伸长或压缩。

当 |λ| >1时,表示向量a的有向线段在原方向(λ>0)或反方向(λ<0)上伸长为原来的|λ|倍。
当|λ|<1时,表示向量a的有向线段在原方向(λ>0)或反方向(λ<0)上缩短为原来的 |λ|倍。

实数p和向量a的点乘乘积是一个数。

数与向量的乘法满足下面的运算律
结合律:(λa)·b=λ(a·b)=(a·λb)。
向量对于数的分配律(第一分配律):(λ+μ)a=λa+μa.
数对于向量的分配律(第二分配律):λ(a+b)=λa+λb.

数乘向量的消去律:
① 如果实数λ≠0且λa=λb,那么a=b。
② 如果a≠0且λa=μa,那么λ=μ。

注: 向量的加减乘(向量没有除法)运算满足实数加减乘运算法则。

代码实现:
二维

    /// 数乘
    public static M_Vector2 operator *(M_Vector2 m_Vector2,float k)
    {
        return new M_Vector2(m_Vector2.x * k, m_Vector2.y * k);
    }

三维

    //数乘
    public static M_Vector3 operator *(M_Vector3 v3, float lambda)
    {
        return new M_Vector3(v3.x * lambda, v3.y * lambda, v3.z * lambda);
    }

4.4 数量积
4.4.1 定义:
两个向量的数量积(内积、点积)是一个标量(没有方向),记作a·b。

已知两个非零向量a,b,作OA=a,OB=b,则∠AOB称作向量a和向量b的夹角,记作θ并规定0≤θ≤π。

若a、b不共线,则 ;若a、b共线,则 。
向量的数量积的坐标表示:a·b=x·x’+y·y’。

4.4.2 几何意义
1.可以用来计算两个向量的夹角
由点乘公式可得
c o s θ = a ⋅ b ∣ a ∣ ∣ b ∣   cos \theta = \cfrac {a \cdot b}{\vert a \vert \vert b \vert \ } cosθ=a∣∣b ab

    public static float Angle(M_Vector2 from,M_Vector2 to)
    {
        float denominator = from.Magnitude * to.Magnitude;
        float dot = Dot(from, to) / denominator;
        //Cos弧度值的范围为-1到1
        if(dot < -1)
        {
            dot = -1;
        }
        else if(dot > 1)
        {
            dot = 1;
        }
        return (float)Math.Acos(dot) * 180 / Mathf.PI;
    }

2.x向量在x向量方向上的投影
例如a向量在b向量方向上的投影S为:
S = a ⋅ b ∣ b ∣ S = \cfrac {a \cdot b}{\vert b \vert} S=bab

    //A向量在B向量方向上的投影
    public static float ProjectMagnitude(M_Vector2 m_Vector2_A, M_Vector2 m_Vector2_B)
    {
        return Dot(m_Vector2_A,m_Vector2_B) * m_Vector2_B.Magnitude;
    }

补充:x向量在x向量方向上的投影向量
例如a向量在b向量方向上的投影P为:
P = b ∣ b ∣ ⋅ ∣ a ∣ ⋅ c o s θ P = \cfrac {b}{\vert b \vert} \cdot\vert a \vert \cdot cos \theta P=bbacosθ

    //A向量在B向量方向上的投影向量
    public static M_Vector2 Project(M_Vector2 m_Vector2_A, M_Vector2 m_Vector2_B)
    {
        return m_Vector2_B.normalized * m_Vector2_A.Magnitude * (float)Math.Cos(Angle(m_Vector2_A, m_Vector2_B) * 2 * Mathf.PI / 360);
    }

4.4.2 向量的数量积的运算律
交换律:a·b=b·a
结合律:(λa)·b=λ(a·b)
分配律:(a+b)·c=a·c+b·c

4.4.3 向量的数量积的性质
a·a=|a|的平方。
a⊥b〈=〉a·b=0。
|a·b|≤|a|·|b|。(该公式证明如下:|a·b|=|a|·|b|·|cosα| 因为0≤|cosα|≤1,所以|a·b|≤|a|·|b|)

4.4.4向量的数量积与实数运算的主要不同点
1.向量的数量积不满足结合律,即:(a·b)·c≠a·(b·c);例如:(a·b)²≠a²·b²。
2.向量的数量积不满足消去律,即:由a·b=a·c(a≠0),推不出b=c。
3.|a·b|与|a|·|b|不等价
4.由 |a|=|b| ,不能推出a=b,也不能推出a=-b,但反过来则成立。
4.4.5 编程计算
1.二维
a = ( a x , a y ) , b = ( b x , b y )   a ⋅ b = [ a x a y ] [ b x b y ] = a x ∗ b x + a y ∗ b y = ∣ a ∣ ⋅ ∣ b ∣ ⋅ c o s θ a=(a_x,a_y),b=(b_x,b_y) \\ \ \\ a \cdot b= \begin{bmatrix} a _x & a_y \end{bmatrix} \begin{bmatrix} b _x \\ b_y \end{bmatrix} = a_x*b_x + a_y * b_y = \vert a \vert \cdot \vert b \vert \cdot cos \theta a=(ax,ay),b=(bx,by) ab=[axay][bxby]=axbx+ayby=abcosθ
代码实现:

    public static float Dot(M_Vector2 m_Vector2_A, M_Vector2 m_Vector2_B)
    {
        return m_Vector2_A.x * m_Vector2_B.x + m_Vector2_A.y * m_Vector2_B.y;
    }

2.三维
a = ( a x , a y , a z ) , b = ( b x , b y , b z )   a ⋅ b = [ a x a y a z ] [ b x b y b z ] = a x b x + a y b y + a z b z = ∣ a ∣ ⋅ ∣ b ∣   c o s θ a=(a_x,a_y,a_z),b=(b_x,b_y,b_z) \\ \ \\ a \cdot b= \begin{bmatrix} a _x & a_y & a_z \end{bmatrix} \begin{bmatrix} b _x \\ b_y\\ b_z \end{bmatrix} = a_xb_x + a_y b_y + a_zb_z= \vert a \vert \cdot \vert b \vert\ cos \theta a=(ax,ay,az),b=(bx,by,bz) ab=[axayaz] bxbybz =axbx+ayby+azbz=ab cosθ
代码实现:

    //点积
    public static float Dot(M_Vector3 v3_A,M_Vector3 v3_B)
    {
        return v3_A.x * v3_B.x + v3_A.y + v3_B.y + v3_A.z + v3_B.z;
    }

4.5 向量积
4.5.1 定义:
两个向量a和b的向量积(外积、叉积)是一个向量,记作a×b(这里“×”并不是乘号,只是一种表示方法,与“·”不同)。
若a、b不共线,则a×b的模是:∣a×b∣=|a|·|b|·sin〈a,b〉;a×b的方向是:垂直于a和b,且a、b和a×b按这个次序构成右手系。
若a、b垂直,则∣a×b∣=|a|*|b|(此处与数量积不同,请注意),若a×b=0,则a、b平行。
向量积即两个不共线非零向量所在平面的一组法向量。

运算法则:
设i,j,k分别为沿x,y,z轴的单位向量
A = ( a x , a y , a z ) , B = ( b x , b y , b z ), A=(a_x,a_y,a_z),B=(b_x,b_y,b_z), A=(ax,ay,az)B=(bx,by,bz),
则有
A = a x i + a y j + a z k , B = b x i + b y j + b z k .    A= a_xi+a_yj+a_zk ,\\ B= b_xi+b_yj+b_zk.\ \ A=axi+ayj+azk,B=bxi+byj+bzk.  
运用三阶行列式
1.二维
a × b = ∣ i j k a x a y 0 b x b y 0 ∣ = ( a x b y − b x a y ) k a \times b = \begin{vmatrix} i & j & k\\ a_x & a_y & 0\\ b_x & b_y & 0 \end{vmatrix} = (a_x b_y - b_x a_y)k a×b= iaxbxjaybyk00 =(axbybxay)k

则有
∣ a × b ∣ = ∣ a x ∗ b y − b x ∗ a y ∣ = ∣ a ∣ ⋅ ∣ b ∣ ⋅ s i n θ \vert a \times b \vert =\vert a_x * b_y - b_x * a_y \vert = \vert a \vert \cdot \vert b \vert \cdot sin \theta a×b=axbybxay=absinθ

由上可见,叉乘在x,y平面上计算后的结果方向是在z轴上,在二维中的实际意义不大,大多引擎中也没有给出相关实现的代码。

2.三维
则  A × B = ∣ i j k a x a y a z b x b y b z ∣ = ( a y b z − a z b y ) i − ( a x b z − a z b x ) j + ( a x a y − a y b x ) k = ( a y b z − a z b y ) i + ( a z b x − a x b z ) j + ( a x a y − a y b x ) k 则\ A \times B=\begin{vmatrix} i & j & k \\ a_x & a_y & a_z\\ b_x & b_y & b_z \end{vmatrix}\\=(a_yb_z-a_zb_y)i-(a_xb_z-a_zb_x)j+(a_xa_y-a_yb_x)k\\=(a_yb_z-a_zb_y)i+(a_zb_x - a_xb_z)j+(a_xa_y-a_yb_x)k  A×B= iaxbxjaybykazbz =(aybzazby)i(axbzazbx)j+(axayaybx)k=(aybzazby)i+(azbxaxbz)j+(axayaybx)k

此时i,j,k轴对应的向量为
( a y b z − a z b y , a z b x − a x b z , a x a y − a y b x ) (a_yb_z-a_zb_y,a_zb_x - a_xb_z,a_xa_y-a_yb_x) (aybzazbyazbxaxbzaxayaybx)

所以有
∣ A × B ∣ = ( a y b z − a z b y ) 2 + ( a z b x − a x b z ) 2 + ( a x a y − a y b x ) 2 = ∣ A ∣ ⋅ ∣ B ∣   s i n θ \vert A \times B \vert = \sqrt{(a_yb_z-a_zb_y)^2 + (a_zb_x - a_xb_z)^2 + (a_xa_y-a_yb_x)^2} =\vert A \vert \cdot \vert B \vert \ sin \theta A×B=(aybzazby)2+(azbxaxbz)2+(axayaybx)2 =AB sinθ
代码实现:

    //叉积
    public static M_Vector3 Cross(M_Vector3 V3_A,M_Vector3 V3_B)
    {
        return new M_Vector3(
            V3_A.y * V3_B.z - V3_A.z * V3_B.y,
            V3_A.z * V3_B.x - V3_A.x * V3_B.z,
            V3_A.x * V3_B.y - V3_A.y * V3_B.x);
    }

验证

        M_Vector3 v1 = new M_Vector3(1, Mathf.Sqrt(3), 3);
        M_Vector3 v2 = new M_Vector3(Mathf.Sqrt(3), 1, 5);
        float angle = M_Vector3.Angle(v1, v2);
        Debug.Log(angle);
        M_Vector3 normalVec = M_Vector3.Cross(v1, v2);
        Debug.Log("左边:" + (normalVec.Magnitude));
        Debug.Log("右边:" + (v1.Magnitude * v2.Magnitude * Mathf.Sin(angle * 2 * Mathf.PI / 360)));

叉乘的意义:
方向为两向量的组成平面的法向量方向,大小为两向量组成的平行四边形的面积

向量的向量积性质:
∣ a × b ∣ 是以 a 和 b 为边的平行四边形面积。   a × a = 0 。   a / / b ( 平行 )    ⟺    a × b = 0   |a×b|是以a和b为边的平行四边形面积。 \\ \ \\ a×a=0。 \\ \ \\ a//b (平行)\iff a×b=0 \\ \ \\ a×b是以ab为边的平行四边形面积。 a×a=0 a//b(平行)a×b=0 
向量的向量积运算律:
a × b = − b × a   ( λ a ) × b = λ ( a × b ) = a × ( λ b )   a × ( b + c ) = a × b + a × c .   ( a + b ) × c = a × c + b × c . a \times b=-b \times a \\ \ \\ (λa) \times b=λ(a \times b)=a \times (λb) \\ \ \\ a \times (b+c)=a\times b+a \times c. \\ \ \\ (a+b)×c=a×c+b×c. a×b=b×a (λa)×b=λ(a×b)=a×(λb) a×(b+c)=a×b+a×c. (a+b)×c=a×c+b×c.
上两个分配律分别称为左分配律和右分配律。在演算中应注意不能交换“×”号两侧向量的次序。
注: 向量没有除法,“向量AB/向量CD”是没有意义的。

4.6 三向量混合积
定义:
给定空间三向量a、b、c,向量a、b的向量积a×b,再和向量c作数量积(a×b)·c,所得的数叫做三向量a、b、c的混合积,记作(a,b,c)或(abc),即(abc)=(a,b,c)=(a×b)·c

混合积具有下列性质:
1.三个不共面向量a、b、c的混合积的绝对值等于以a、b、c为棱的平行六面体的体积V,并且当a、b、c构成右手系时混合积是正数;当a、b、c构成左手系时,混合积是负数,即(abc)=εV(当a、b、c构成右手系时ε=1;当a、b、c构成左手系时ε=-1)
2.上性质的推论:三向量a、b、c共面的充要条件是(abc)=0
3.(abc)=(bca)=(cab)=-(bac)=-(cba)=-(acb)

4.7 双重向量积
定义:
给定空间的三个向量a,b,c,如果先做其中两个向量a,b的向量积a×b,再做所得向量与第三向量的向量积,那么最后的结果仍然是一个向量,叫做所给三向量的双重向量积,记做:(a×b)×c。

性质:
(a×b)×c=(a·c)·b-(b·c)·a
a×(b×c)=-(b×c)×a=(a·c)·b-(a·b)·c

关系式
给定空间内四个向量a、b、c、d,则这四个向量之间满足如下关系:
( a × b ) ⋅ ( c × d ) = ( a ⋅ c ) ( b ⋅ d ) − ( a ⋅ d ) ( b ⋅ c ) (a \times b) \cdot (c \times d) = (a \cdot c)(b \cdot d)-(a \cdot d)(b \cdot c) (a×b)(c×d)=(ac)(bd)(ad)(bc)

5. 向量的相关定义

5.1 有向线段
若规定线段AB的端点 A为起点,B为终点,则线段就具有了从起点 A到终点 B的方向和长度。具有方向和长度的线段叫做有向线段。

    //有向线段从B指向A
    public static M_Vector2 DirectedLineSegment(M_Vector2 m_Vector2_A,M_Vector2 m_Vector2_B)
    {
        return m_Vector2_B - m_Vector2_A;
    }

5.2 向量的模
向量的大小,也就是向量的长度。
l = a ∣ a ∣ = a a T a l=\cfrac{a}{\lvert a\lvert }=\cfrac{a}{\sqrt{a^Ta} } l=aa=aTa a

	//模长
    public float Magnitude
    {
        get
        {
            return (float)Math.Sqrt(x * x + y * y);
        }

    }

5.3 单位向量
长度为一个单位(即模为1)的向量,叫做单位向量。

    //单位向量
    public static M_Vector2 One
    {
        get
        {
            return new M_Vector2(1, 1);
        }
    }

归一化的向量,也可看做单位向量

/归一化
    public M_Vector2 normalized
    {
        get
        {
            return Normalize(this);
        }
    }

    public static M_Vector2 Normalize(M_Vector2 m_Vector2)
    {
        return m_Vector2 / m_Vector2.Magnitude;
    }

    public M_Vector2 Normalize()
    {
        return Normalize(this);
    }

5.4 负向量(相反向量)
如果向量AB与向量CD的模相等且方向相反,那么我们把向量AB叫做向量CD的负向量,也称为相反向量。

    //负向量
    public static M_Vector2 operator -(M_Vector2 m_Vector2)
    {
        return new M_Vector2(-m_Vector2.x,-m_Vector2.y);
    }
    public static M_Vector2 NegativeVector(M_Vector2 m_Vector2)
    {
        return -m_Vector2;
    }

5.5 零向量
长度为0的向量叫做零向量,记作0。零向量的始点和终点重合,所以零向量没有确定的方向,或说零向量的方向是任意的。

    //零向量
    public static M_Vector2 Zero
    {
        get
        {
            return new M_Vector2(0, 0);
        }
    }

5.6 相等向量
长度相等且方向相同的向量叫做相等向量.向量a与b相等,记作a=b。
规定:所有的零向量都相等

//判断两个向量是否相等
	public static bool operator == (M_Vector2 m_Vector2_A,M_Vector2 m_Vector2_B)
    {
        if (m_Vector2_A.x == m_Vector2_B.x && m_Vector2_A.y == m_Vector2_B.y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
	//判断两个向量是否不相等
	public static bool operator !=(M_Vector2 m_Vector2_A, M_Vector2 m_Vector2_B)
    {
        if(m_Vector2_A == m_Vector2_B)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

5.7 自由向量
始点不固定的向量,它可以任意的平行移动,而且移动后的向量仍然代表原来的向量。
在自由向量的意义下,相等的向量都看作是同一个向量。

M_Vector2 a1 = new M_Vector2(1, 2);
M_Vector2 a2 = new M_Vector2(1, 2);
M_Vector2 a3 = new M_Vector2(3, 2);

5.8 滑动向量
沿着直线作用的向量称为滑动向量。

    /// <summary>
    /// 滑动向量
    /// </summary>
    /// <param name="m_Vector2">方向</param>
    /// <param name="distance">滑动距离</param>
    /// <returns></returns>
    public static M_Vector2 SlipVector(M_Vector2 m_Vector2,float distance)
    {
        return m_Vector2 * distance;
    }

5.8 固定向量
作用于一点的向量称为固定向量(亦称胶着向量)。
代码参考 有向线段

5.9 位置向量
对于坐标平面内的任意一点P,我们把向量OP叫做点P的位置向量,记作:向量P。
代码参考 有向线段

5.10 平行向量(共线向量)
方向相同或相反的非零向量叫做平行(或共线)向量.向量a、b平行(共线),记作a//b。
零向量长度为零,是起点与终点重合的向量,其方向不确定。
规定:零向量与任一向量平行。平行于同一直线的一组向量是共线向量。
若a=(x,y),b=(m,n),则a//b→a×b=xn-ym=0

    //判断两个向量是否公线
    public static bool  IsParallelVector(M_Vector2 m_Vector2_A,M_Vector2 m_Vector2_B)
    {
        if(m_Vector2_A.x * m_Vector2_B.y - m_Vector2_A.y * m_Vector2_B.x == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

5.11 方向向量
直线l上的向量a以及与向量a共线的向量叫做直线l上的方向向量。
代码参考 共线向量

5.12 共面向量(3维空间)
平行于同一平面的三个(或多于三个)向量叫做共面向量。
空间中的向量有且只有以下两种位置关系:
⑴共面;
⑵不共面。
注意:只有三个或三个以上向量才谈共面不共面。

5.13 法向量(3维空间)
直线l⊥α,取直线l的方向向量a,则向量a叫做平面α的法向量。
参考向量的向量积运算

6. 向量定理

6.1 共线定理
若 b ≠ 0 ,则 a / / b 的充要条件是存在唯一实数 λ ,使   a → = λ b → 。   若设 a = ( a x , a y ) , b = ( b x , b y ) ,则有   a x b y = b x a y ,   与平行概念相同。 0 → 平行于任何向量。 若b≠0,则a//b的充要条件是存在唯一实数λ,使 \\ \ \\ \overrightarrow{a} = \lambda\overrightarrow{b}。 \\ \ \\ 若设a=(a_x,a_y),b=(b_x,b_y) ,则有 \\ \ \\ a_xb_y=b_xa_y, \\ \ \\ 与平行概念相同。\overrightarrow{0}平行于任何向量。 b=0,则a//b的充要条件是存在唯一实数λ,使 a =λb  若设a=(ax,ay)b=(bx,by),则有 axby=bxay 与平行概念相同。0 平行于任何向量。

6.2 垂直定理
a ⊥ b 的充要条件是 a ⋅ b = 0 ,即 ( a x b x + a y b y ) = 0 。 a⊥b的充要条件是a·b=0,即(a_xb_x+a_yb_y)=0 。 ab的充要条件是ab=0,即(axbx+ayby)=0

6.3 分解定理
平面向量分解定理:
如果 e 1 → 、 e 2 → 是同一平面内的两个不平行向量,   那么对于这一平面内的任一向量,有且只有一对实数 λ 1 , λ 2 ,   使 a → = λ 1 e 1 → + λ 2 e 2 → ,   我们把不平行向量、叫做这一平面内所有向量的基底。 如果\overrightarrow{e_1}、\overrightarrow{e_2}是同一平面内的两个不平行向 量, \\ \ \\ 那么对于这一平面内的任一向量,有且只有一对实数\lambda_1,\lambda_2, \\ \ \\ 使\overrightarrow{a} =\lambda_1 \overrightarrow{e_1} + \lambda_2 \overrightarrow{e_2}, \\ \ \\ 我们把不平行向量 、 叫做这一平面内所有向量的基底。 如果e1 e2 是同一平面内的两个不平行向量, 那么对于这一平面内的任一向量,有且只有一对实数λ1,λ2 使a =λ1e1 +λ2e2  我们把不平行向量、叫做这一平面内所有向量的基底。

6.4 定比分点公式
P = [ x y ]    P 1 = [ x 1 y 1 ] P 2 = [ x 2 y 2 ]   ( P − P 1 ) = λ ( P 2 − P )   P = 1 1 + λ ( P 1 + λ P 2 ) = 1 1 + λ [ x x + λ x 2 y 1 + λ y 2 ]   其中 λ ∈ R ∗ , λ 为点 P 有向线段 P 1 P 2 → 所成比。 P=\begin{bmatrix} x \\ y\\ \end{bmatrix}\ \ P_1=\begin{bmatrix} x_1 \\ y_1\\ \end{bmatrix} P_2=\begin{bmatrix} x_2 \\ y_2\\ \end{bmatrix} \\ \ \\ (P - P_1) = \lambda(P_2 - P) \\ \ \\ P = \cfrac{1}{1 + \lambda}(P_1 + \lambda P_2)=\cfrac{1}{1 + \lambda}\begin{bmatrix} x_x + \lambda x_2 \\ y_1 + \lambda y_2\\ \end{bmatrix} \\ \ \\ 其中\lambda\in R^*, \lambda 为点P有向线段\overrightarrow{P_1P_2}所成比。 P=[xy]  P1=[x1y1]P2=[x2y2] (PP1)=λ(P2P) P=1+λ1(P1+λP2)=1+λ1[xx+λx2y1+λy2] 其中λR,λ为点P有向线段P1P2 所成比。

6.5 三点共线定理
已知 O 是 A B 所在直线外一点,若 O C → = λ O A → + μ O B → , 且 λ + μ = 1 ,则 A 、 B 、 C 三点共线。 已知O是AB所在直线外一点,若\overrightarrow{OC} = \lambda \overrightarrow{OA} + \mu \overrightarrow{OB}, 且 \lambda + \mu = 1,则A、B、C三点共线。 已知OAB所在直线外一点,若OC =λOA +μOB ,λ+μ=1,则ABC三点共线。

6.6 重心判断式
在 △ A B C 中 , 若 G A → + G B → + G C → = 0 → , 则 G 为 △ A B C 的重心 在\triangle ABC中,若\overrightarrow{GA} + \overrightarrow{GB} + \overrightarrow{GC} = \overrightarrow{0},则G为\triangle ABC的重心 ABC,GA +GB +GC =0 ,GABC的重心

6.7 垂心判断式
在 △ A B C 中,若 H A → ⋅ H B → = H B → ⋅ H C → = H C → ⋅ H A → ,则 H 为 △ A B C 的垂心。 在 \triangle ABC中,若\overrightarrow{HA}\cdot \overrightarrow{HB} = \overrightarrow{HB} \cdot \overrightarrow{HC} = \overrightarrow{HC} \cdot \overrightarrow{HA},则H为\triangle ABC的垂心。 ABC中,若HA HB =HB HC =HC HA ,则HABC的垂心。

6.8 内心判断式
在 △ A B C 中,若 a I A → + b I B → + c I C → = 0 → , 且 P I = a P A → + b P B → + c P C → a + b + c ,则 H 为 △ A B C 的内心。 在 \triangle ABC中,若a\overrightarrow{IA} + b\overrightarrow{IB} +c\overrightarrow{IC} = \overrightarrow{0} , 且PI = \cfrac{a\overrightarrow{PA} + b\overrightarrow{PB} +c\overrightarrow{PC}}{a+b+c}, 则H为 \triangle ABC的内心。 ABC中,若aIA +bIB +cIC =0 ,PI=a+b+caPA +bPB +cPC ,则HABC的内心。

6.9 外心判断式
在 △ A B C 中 , 若 ∣ O A → ∣ = ∣ O B → ∣ = ∣ O C → ∣ , 则 O 为 △ A B C 的外心。   此时 O 满足 ( O A → + O B → ) ⋅ A B → = ( O B → + O C → ) ⋅ B C → = ( O C → + O A → ) ⋅ C A → = 0 → 。 在 \triangle ABC中,若\lvert \overrightarrow{OA}\lvert = \lvert \overrightarrow{OB}\lvert =\lvert \overrightarrow{OC}\lvert ,则O为\triangle ABC的外心。 \\ \ \\ 此时O满足(\overrightarrow{OA}+\overrightarrow{OB})\cdot \overrightarrow{AB} = (\overrightarrow{OB}+\overrightarrow{OC})\cdot \overrightarrow{BC} = (\overrightarrow{OC}+\overrightarrow{OA})\cdot \overrightarrow{CA} = \overrightarrow{0}。 ABC,OA =OB =OC ,OABC的外心。 此时O满足(OA +OB )AB =(OB +OC )BC =(OC +OA )CA =0
6.9 向量中线公式
若 P 为线段 A B 的中点, O 为平面内一点,则 O P → = 1 2 ( O A → + O B → ) 。 若P为线段AB的中点,O为平面内一点,则\overrightarrow{OP}=\cfrac{1}{2}(\overrightarrow{OA}+\overrightarrow{OB})。 P为线段AB的中点,O为平面内一点,则OP =21(OA +OB )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值