AFO

计算几何

逆时针转90度 (-y,x);

关于精度误差

判断\(a,b\)相等 \(fabs(a-b)<eps\)

判断\(a,b\)不相等 \(fabs(a-b)>eps\)

判断\(:::a<b:a+eps<b\)

判断:\(a\leq b:a<b+eps\)


点积

\(a\cdot b=|a||b|\cos\theta\)

就等于\(a\)的模长乘上\(b\)\(a\)上投影的长度

满足分配律,交换律 \((a+b)\cdot c=a\cdot c+b\cdot c\)

假如\(a(x_1,y_1),b(x_2,y_2)\) 那么\(a\cdot b=x_1x_2+y_1y_2\)

\(a\bot b \Leftrightarrow a\cdot b=0\)

夹角小于90度点积大于0

夹角大于90度点积小于0


叉积

\(a\times b=|a||b|sin\ \theta\)

\(a,b\)为向量,\(\theta\)\(a\)旋转到\(b\)的夹角

\(b\)\(a\)左边为正,右边为负

表示的是\(ab\)围成的平行四边形的面积

\(a\times b=b\times -a\)

满足分配律

假如\(a(x_1,y_1),b(x_2,y_2)\) 那么\(a\times b=x_1y_2-x_2y_1\)

可以用叉积判断两个向量的左右关系,判断平行

可以用来求三角形面积

甚至可以求点到直线的距离!!


向量旋转

\(a\)旋转\(\theta\)

先把\(a\)缩放到1,设原角为\(\alpha\)

然后\(a'\)就是\((cos(\alpha+\theta),sin(\alpha+\theta))\)

就是\((x\cos\theta-y\sin\theta,x\sin\theta+y\cos\theta)\)


直线交点

\[O=A+(B-A)\times\frac{S_{ACD}}{S_{ACD}+S_{BCD}} \]

特判是否平行


多边形面积

对于一个多边形定点按逆时针排序

\[s=\frac 1 2 (P_n\times P_1+\sum_{i=1}^{n-1}P_i\times P_{i+1}) \]


圆的交点

1547776934621

用余弦定理\(^{[1]}\) 算出\(\theta\)然后把\(D\)转过去就行了

余弦定理表达式

三角形

img


两圆公切线


皮克定理

2S=2a+b-2,其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。


凸包

能包围住所有点的最小的凸多边形

Andrew

把所有点按横坐标第一关键字,纵坐标第二关键字排序

第一个点肯定在凸包上,用栈维护下凸包

然后倒过来枚举,求上凸包

posted @ 2019-01-18 19:27  ZUTTER☮  阅读(231)  评论(0编辑  收藏  举报