矩陣經典操作(1)

2021-06-17 23:59:51 字數 2331 閱讀 4472

關於矩陣的經典操作1,那就是座標的變換

通過二維空間或者三維空間,給定n個點,m 個操作,構造o(m+n)的演算法輸出m個操作後各點的位置,操作有平移、縮放、翻轉和旋轉

參考:十個利用矩陣乘法解決的經典題目

在三維空間中就是擴張一下就可以了,只是在三維空間的旋轉,如果給定的是角度,那麼就要注意公式如下:

因此要注意一下,這是針對角度和座標點

hdu3320

題目連線:

題意描述:給定座標(1,1,,,1),求經過若干操作後的座標位置

在這兒先是把初始點構造單位矩陣,在沒進過乙個操作就利用矩陣來實現

#include#include#include#include#include#include#include#include#define maxn 10000

using namespace std;

struct matrix

matrix operator +(const matrix &b)const

}return c;

}matrix operator *(const matrix &b)const}}

return c;

}};int t;

double x,y,z,angle;

char str1[100],str2[100];

double num[4];

int main()

; scanf("%s",str1);

scanf("%s",str2);

while(str2[2]!='e')

;b=b*temp;

break;

}case 's':

;b=b*temp;

break;

}case 'r':

;b=b*temp;

break;

}case 'v':

}scanf("%s",str2);

}printf("%.1lf %.1lf %.1lf\n",

b.a[0][0]*num[0]+b.a[0][1]*num[1]+b.a[0][2]*num[2]+b.a[0][3],

b.a[1][0]*num[0]+b.a[1][1]*num[1]+b.a[1][2]*num[2]+b.a[1][3],

b.a[2][0]*num[0]+b.a[2][1]*num[1]+b.a[2][2]*num[2]+b.a[2][3]);

}return 0;

}

hdu4087

題目連線:

這個題比較蛋疼,主要是讀入資料比較麻煩,其他的操作沒啥

在讀入時只要用額外的陣列來輔助

#include#include#include#include#include#include#include#include#define maxn 10000

using namespace std;

const double pi=acos(-1.0);

const double eps = 1e-6;

int sig(double d)

struct matrix

void clear()

void transose()//轉置

}matrix operator +(const matrix &b)const

}return c;

}matrix operator *(const matrix &b)const}}

return c;

}};matrix operator ^(matrix a,int b)

a=a*a;

b>>=1;

}return ans;

}int repeat[55555];

matrix m[55555];

int main()

}if (op == "rotate")

if (op == "repeat")

if (op == "translate")

if (op == "scale")

}for (int i = 0; i < n; i++)

for (int i = 0; i < 4; i++)

if (sig(ret.mat[0][i]) == 0) ret.mat[0][i] = 0.0;

printf("%.2f %.2f %.2f\n", ret.mat[0][0], ret.mat[0][1], ret.mat[0][2]);

}puts("");

}return 0;

}

這個題目也可以用stack來模擬資料的讀入過程,只是這樣做比較麻煩

矩陣與矩陣的相關操作(1

就是取i 和 j中的較大者進行個數計算。壓縮後的一維陣列大小為 n n 1 2 在n n的矩陣中,表示兩個對稱點是 i 表示行,j 表示列 num i n j 與 num j n i 如果這個對稱矩陣已經被表示為一維陣列儲存num n n 那麼我們如何在一維陣列中進行轉置的運算呢?當然在一維陣列中,...

MatLab學習1 矩陣操作

1 簡單矩陣構造 a 1,2,3 構造乙個1x3的矩陣,各元素為1,2,3 或者a 1 2 3 使用空格 b 1,2,3 7,4,9 兩行三列矩陣b 2 特殊矩陣構造 1 ones函式 a ones n 構造nxn的全1矩陣 b ones m,n 產生mxn的全1矩陣 2 zeros 類似的有 a ...

MATLAB矩陣基本操作1

matlab 矩陣操作 結構矩陣 和單元矩陣 結構矩陣 格式為 結構矩陣元素.成員名 表示式a 1 x1 10 a 1 x2 liu a 1 x3 10 21 34 78 a 2 x1 11 a 2 x2 xia a 2 x3 11 121 34 78 a 3 x1 12 a 3 x2 cai a ...