计算几何之基础篇

向量

AB 表示一个从点A到点B的向量。

向量满足:

加法的交换性: a⃗ +b⃗ =b⃗ +a⃗ 
加法的结合性: (a⃗ +b⃗ )+c⃗ =a⃗ +(b⃗ +c⃗ )
加法恒等式: 0⃗ +a⃗ =a⃗ 
对于一个实数 k ,有 ka⃗  的方向与 a⃗  相同, |ka⃗ |=k|a⃗ |
对于任意一个向量 X⃗  ,存在一个向量 X⃗  (模相等,方向相反)使得 X⃗ +(X⃗ )=0
对于实数 r,s ,向量满足:
纯量乘法的结合性: r(sX⃗ )=(rs)X⃗ 
纯量乘法的分配性: (r+s)X⃗ =rX⃗ +sX⃗ 
向量加法的分配性: r(X⃗ +Y⃗ )=rX⃗ +rY⃗ 

向量的坐标表示法:

对于两个维数相同的点 A(x1,x2,...,xn)B(y1,y2,...,yn)AB=(y1x1,y2x2,...,ynxn)

向量加减法:

1°平行四边形法则。
2°对于两个维数相同的向量:它们的加(减)法得出的向量各坐标等于这两个向量各坐标分别相加(减)。

向量的模,即向量的长度:

对于向量 a⃗ =(x1,x2,...,xn),|a⃗ |=i=1nx2i

向量乘法:

点积:

对于两个维数为 n 的向量 a⃗ =(x1,x2,...,xn),b⃗ =(y1,y2,...,yn) a⃗ b⃗ =|a⃗ ||b⃗ |cosθ=i=1nxiyi
点积求出的是一个标量。

叉积:

二维向量 a⃗ =(x1,y1),b⃗ =(x2,y2), a⃗ ×b⃗ =x1y2x2y1
叉积求出的数值为以 a⃗ ,b⃗  为邻边的平行四边形的有向面积。常用叉积来计算三角形或平行四边形面积及判断两向量的相对方向(即向左拐或向右拐)。

向量的旋转:

向量 <x,y> 逆时针旋转 α 角度变成 <xcosαysinα,xsinα+ycosα>

两线段相交

判断两线段是否相交

已知两线段 P1P2,Q1Q2
要求这两线段是否相交。

快速排斥试验

若两线段相交,则以这两线段为对角线分别作两个矩形,这两个矩形必须相交。这就是快速排斥试验。

跨立试验

P1P2 跨立 Q1Q2 ,则矢量 (P1Q1),(P2Q1) 位于矢量 (Q2Q1) 的两侧。即满足 (P1Q1)×(Q2Q1)(P2Q1)×(Q2Q1)<0 。若 (P1Q1)×(Q2Q1)(P2Q1)×(Q2Q1)=0 ,说明 P1P2 在直线 Q1Q2 上,但因为已通过快速排斥试验,所以这两线段是相交的。故上式可改写成 (P1Q1)×(Q2Q1)(P2Q1)×(Q2Q1)0
同理,若 Q1Q2 跨立 P1P2 ,则要满足 (Q1P1)×(P2P1)(Q2P1)×(P2P1)0
P1P2 跨立 Q1Q2 Q1Q2 跨立 P1P2 ,跨立试验成功。

当快速排斥试验与跨立实验都成功时,这两条线段相交。

求两线段交点

由相似三角形、定比分点等知识我们可以得出两线段交点公式。套用向量乘法,我们能简便地求出两线段交点。

面积

三角形面积

公式很多,在此不赘述,用得较多的是叉积绝对值的一半。

多边形面积

选取多边形上一个顶点作为三角形的一个固定顶点,每次选取多边形上另外两个相邻顶点作为三角形的另外两个顶点,求三角形面积和。
也可看成每次选取多边形上两个相邻顶点,求前一个顶点与后一个顶点关于原点的有向面积和。证明显然。
一个 n 边形的面积公式:
S=i=1n(XiYi+1Xi+1Yi)2
(顶点按顺时针(或逆时针)排序后第 i 个顶点坐标 (Xi,Yi)Xn+1=X1,Yn+1=Y1 )

凸包

平面上 N 个点,用一个最小(周长、面积)的凸多边形包住它们,使每个点落在凸多边形内或凸多边形上。

Graham扫描法

选择一个 x 坐标(相同情况下 y 坐标)最小的点作为基点,使其他所有点落在第一、四象限上,然后进行极角排序,按逆时针插入其他点,用栈存储凸包上的点,插入时用叉积判断维护栈顶凸性。

你可能感兴趣的:(计算几何)