向量的运算

因为必修4没有学好导致计算几何挂掉了,所以来补一补TAT
1.(自由)向量的定义:
起始点任意,方向和长度固定的有向线段。
2.向量的代数表示:
向量a记作 a⃗ 
3.向量的几何表示:
可以用一个有向线段来表示向量。
我们现在先要证明平面向量基本定理
定理内容:
对于平面向量 a⃗ =mi⃗ +nj⃗  ,其中 i⃗ ,j⃗  为任意两个不共线的向量。
这个是个公理啊TAT
4.向量的坐标表示:
在二维向量中,分别取与x轴y轴平行的两个单位(长度)向量 i⃗ ,j⃗ 
则由平面向量基本定理可以知道,任意向量都能被 i⃗ ,j⃗  表示出来。
a⃗ =mi⃗ +nj⃗ 
那么我们就可以把向量a写成坐标形式: a⃗ (m,n)
很好,我们已经有了向量的坐标表示了。

向量的运算:
数乘: a⃗ =(m,n),ka⃗ =(km,kn);
加法: a⃗ =(m,n),b⃗ =(p,q)c⃗ =a⃗ +b⃗ =(m+p,n+q)
减法同理。
数量积(点积)的代数定义: a⃗ =(m,n),b⃗ =(p,q),a⃗ b⃗ =mp+nq;
数量积(点积)的几何定义: a⃗ b⃗ =|a||b|cosθ
其中 |a|,|b| a⃗ ,b⃗  的模长。
我们如果能证明这两个是等价的,应该就能计算一些很有用的东西了。
参见百度百科:数量积
向量(叉)积的代数定义: a×b=(xaybyaxb)
可以写成行列式形式:
|x1y1|
|x2y2|
这样就好记多了。
实际上,n维方阵的行列式的值代表的是n个向量组成的图形的n维积。
向量(叉)积的几何定义:好像没有几何定义TAT
向量积的(大小)计算式: a⃗ ×b⃗ =|a||b|sinθ
即a和b的平行四边形的面积。

我好像忘记我为什么要写向量的运算了TAT
直线求交点:
定比分点公式:
在直线AB上,对于任意一点P(x,y),有:

λ=AP/PB

x=xa+λxb1+λ,y=ya+λyb1+λ

证明可以直接向量证明。

求直线AB和CD的交点O,我们可以求OC : OD,然后根据定比分点来计算O的坐标。
现在问题在于怎么计算比值。
OCOD=SΔOAB:SΔOAC
根据叉积求面积即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define Rep(i,n) for(int i = 1;i <= n;i ++)
using namespace std;
const int N = 100005;
struct Point 
{
    double x,y;
    Point(double x = 0.0,double y = 0.0)
    {
        this -> x = x;
        this -> y = y;
    }
}p[N];
Point operator+(const Point &x,const Point &y){return (Point){x.x + y.x,x.y + y.y};}
Point operator-(const Point &x,const Point &y){return (Point){x.x - y.x,x.y - y.y};}
double operator/(const Point &x,const Point &y){return x.x / y.x;}
double dot(const Point &x,const Point &y){return x.x * y.x + x.y * y.y;}
double crs(const Point &x,const Point &y){return x.x * y.y - x.y * y.x;}
Point Get(const Point &x,const Point &y,const Point &p,const Point &q) //计算xy与pq的交点 
{
    double S1 = fabs(crs(x - p,y - x)),S2 = fabs(crs(x - q,y - x));
    return (Point){(p.x * S2 + S1 * q.x) / (S1 + S2),(p.y * S2 + S1 * q.y) / (S1 + S2)};
}

向量的运算到此就截止了,如果有其他时间我应该会补上三角函数的公式。

你可能感兴趣的:(向量的运算)