矩阵乘法经典应用之坐标变化

网友投稿 317 2022-09-01

矩阵乘法经典应用之坐标变化

二维空间: 问题: nyist 298 点的变换 ​​​  m<=1e6

分析:对于旋转:

x'=rcos(p+r)=xcosp-ysinp

y'=rsin (p+r)=xsinp+ycosp

然后是超时问题。想过用一个“基向量”先进行变换操作,然后再给每一个坐标进行变化,但是这样的“基向量”表示不了旋转变化操作。设想“基向量”是(1,1),各种问题出现了。。

O(n*m)的算法程序变成了 O(n+m)

旋转:

平移:

缩放:

绕X:

绕Y:

#include #include #include using namespace std;const int N=1e4+10;const double eps=1e-7, PI=acos(-1.0);struct point { double x,y;}pt[N];struct matrix{ double m[3][3]; matrix(){ // 不写的话随机数字 for(int i=0;i<3;i++) for(int j=0;j<3;j++) m[i][j]=0; }};matrix multi(matrix a,matrix b){ matrix ans; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ ans.m[i][j]=0; for(int k=0;k<3;k++){ ans.m[i][j]+=a.m[i][k]*b.m[k][j]; } } } return ans;}int main(){ //freopen("cin.txt","r",stdin); int n,m; while(cin>>n>>m){ for(int i=0;i

奇怪的答案:

double a=0.0;

printf("%.1lf\n",a+0.05);

-->  0.1

三维空间:

立体几何中的坐标变化:

平移:

缩放:

绕X轴旋转:

绕Y轴旋转:

绕Z轴旋转:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:完美数
下一篇:linux 软件包管理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~