逆时针转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})\]
圆的交点
用余弦定理\(^{[1]}\) 算出\(\theta\)然后把\(D\)转过去就行了
余弦定理表达式
两圆公切线
咕
皮克定理
2S=2a+b-2,其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。
凸包
能包围住所有点的最小的凸多边形
Andrew
把所有点按横坐标第一关键字,纵坐标第二关键字排序
第一个点肯定在凸包上,用栈维护下凸包
然后倒过来枚举,求上凸包