简单几何应用

各个几何点的记录形式:

点:一般用pair记录。pair<int,int>或者结构体Node

直线:在数学上有3种表示方法,但是很明显对于计算机而言并不适用。所以我们可以记录线上一点和方位向量。这就可以确定一条直线了。

线段:记录两点坐标即可

圆:圆心和半径

多边形:开数组按一定顺序记录多边形的每个顶点即可。

三角形两个著名公式:

正弦定理:

 

 R为三角形外接圆的半径。

余弦定理:

 

 

一,线的应用

  1.    判断一个点Q在线的哪侧?
    答:也许我们会有点无从下手。但是如果引入向量,我们就可以很好的考虑这个问题了。首先直线我们是用方向向量v和一个点P来表示,我们可以定义PQ向量,然后在PQ向量和V向量进行叉乘,我们从数学知识上可以得知,如果结果为0,则在直线上,如果为正,则在直线下,否则在直线上。(右手定则)
  2. 判断两个线段是否相交?
    答:两个线段的位置关系可能有相交,共线,平行,不相交。
          a>共线我们判断三点是否共线即可。或者判断两条线段是不是方向向量相同且都过同一点。
          b>平行我们可以判断线段所在直线的斜率即可。
          c>不相交的意思就是这两条线段离得太远了(但是这两条线段所在的直线却是相交的)。
          d>相交的判断,我们可以用到跨立实验,回忆点1之中的内容,我们可以判断一个点Q在线的哪一侧,那么我们现在以A线段作为直线,B线段的两个端点分别为b1,b2.。我们现在就只要判断这两个端点是否在A直线的两侧即可。
  3. 求两直线的交点坐标?
    答:我们想象一下,如果两直线相交了。那么是不是会构成四个角呢?同时这四个角的两条角线如果连接起来,那我们是不是可以构成四个三角形呢?我们现在考虑一个三角形,我们能否通过构成的三角形来求的交点呢?回顾一下已知条件,我们知道两条直线的方向向量和线上一点。那我们也就是知道了那一个三角形的两个顶点和两个方向向量。如下图:

     

    观察上图,我们可以计算|aXb|=|a|*|b|*sin(ß) ,|b*u|=|b|*|u|*sin(θ)。做商可得:
    T=|u|*sin(θ)/(|a|*sin(β))。我们观察可以得知|EB|=|u|/sin(β) * sin(θ).(正弦定理可得,同时sin(180-a) == sin(a))。
    由T变为|EB|的长我们只需要将其乘上a即可得到。那么此时交点的坐标不就是B的坐标平移|EB|个单位长度吗。

  4. 求圆与直线的交点坐标?
    答:圆与直线有三种位置关系;
           a>相离,即圆心到直线的距离大于了半径;
           b>相切,即圆心到直线的距离等于半径;那么我们可过圆心做直线A垂直已知直线,因为垂直,所以根据方向向量就可得到。从而将问题转化为两直线求交点。
           c>相交,可利用勾股定理将其弦中点坐标求得,那么交点坐标就是中点坐标平移半弦长。

二,多边形的应用

  1. 如何判断一个点在多边形的内外?
    答:对点做一条射线,如果点和多边形的交点为奇数个则在里面,为偶数则在外面。
  2. 如何求一个多边形的面积?
    答:又是向量叉积的应用。我们做一辅助点Q,我们可以得到Q点与多边形顶点的向量。
    那么回忆叉积定义,我们可以把多边形的面积公式:

     

     

posted @ 2020-02-21 02:02  风生  阅读(199)  评论(0编辑  收藏  举报