首页 > 其他分享 >重修 计算几何

重修 计算几何

时间:2022-08-13 11:02:03浏览次数:93  
标签:begin end 计算 重修 bt bmatrix 几何 theta hat

向量旋转与基变换

不用死记二维向量旋转矩阵啦!(向量逆时针旋转 \(\theta\) 弧度)

\[\begin{bmatrix} \cos\theta&-\sin\theta \\ \sin\theta&\cos\theta \end{bmatrix} \begin{bmatrix}x\\y\end{bmatrix} = \begin{bmatrix}x'\\y'\end{bmatrix} \]

理解:

本来基底是

\[\hat\imath=\begin{bmatrix}1\\0\end{bmatrix} \ \hat\jmath=\begin{bmatrix}0\\1\end{bmatrix} \]

(上面为 \(x\) 坐标,下面为 \(y\))

基底逆时针旋转 \(\theta\) 后变为

\[\hat\imath'=\begin{bmatrix}\cos\theta \\ \sin\theta\end{bmatrix} \ \hat\jmath'=\begin{bmatrix}-\sin\theta\\ \cos\theta\end{bmatrix} \]

然后就得到开头的旋转矩阵了

\[\begin{bmatrix}\hat\imath' &\hat\jmath'\end{bmatrix}=\begin{bmatrix} \cos\theta&-\sin\theta \\ \sin\theta&\cos\theta \end{bmatrix} \]

这样是因为

\[\begin{bmatrix}\hat\imath' &\hat\jmath'\end{bmatrix}\begin{bmatrix}\hat\imath &\hat\jmath\end{bmatrix}=\begin{bmatrix}\hat\imath' &\hat\jmath'\end{bmatrix} \]

因为左式右边项为单位矩阵。

所以不论是怎样的基变换,都只要将变换后的基并排放在一起就是变换矩阵了。

3b1b 基变换

向量的模长

等于与自身的点积的算数平方根。

二维凸包

通过叉积来计算两个向量的方向关系。

提供简单的写法:

【模板】二维凸包

点击查看代码
//We'll be counting stars.
#include<bits/stdc++.h>
using namespace std;
#define fir first
#define sec second
#define mkp make_pair
#define For(i,j,k) for(int i=(j),i##_=(k);i<=i##_;i++)
#define Rof(i,j,k) for(int i=(j),i##_=(k);i>=i##_;i--)
#define N 100005
#define db double
#define Pos pair<db,db>
Pos operator-(Pos x,Pos y){ return mkp(x.fir-y.fir,x.sec-y.sec); }
db operator^(Pos x,Pos y){ return x.fir*y.sec-x.sec*y.fir; }
db operator*(Pos x,Pos y){ return x.fir*y.fir+x.sec*y.sec; }
db Len(Pos x){ return sqrt(x*x); }
int b[N<<1],bt,n;
Pos a[N];
void insert(int x){
	while(bt>=2 && b[bt]!=n && ((a[x]-a[b[bt]])^(a[b[bt]]-a[b[bt-1]]))>=0) bt--;
	b[++bt]=x;
}
signed main(){ios::sync_with_stdio(false),cin.tie(nullptr);
	cin>>n;
	For(i,1,n) cin>>a[i].fir>>a[i].sec;
	sort(a+1,a+1+n);
	b[bt=1]=1;
	For(i,2,n) insert(i);
	Rof(i,n-1,1) insert(i);
	bt--;
	db ans=0;
	For(i,1,bt) ans+=Len(a[b[i]]-a[b[i%bt+1]]);
	cout<<fixed<<setprecision(2)<<ans<<endl;
return 0;}

标签:begin,end,计算,重修,bt,bmatrix,几何,theta,hat
From: https://www.cnblogs.com/shaojia/p/16479623.html

相关文章