質問編集履歴

2

コード追加

2018/11/20 12:49

投稿

MOTOZOMBIE
MOTOZOMBIE

スコア13

test CHANGED
File without changes
test CHANGED
@@ -7,3 +7,91 @@
7
7
  - Opencv3.3
8
8
 
9
9
  - Visual Studio2015
10
+
11
+
12
+
13
+ このコードはOpenCVを使わず書いた関数です.
14
+
15
+ ```C++
16
+
17
+ #define deg_to_rad(deg) deg * M_PI / 180
18
+
19
+
20
+
21
+ struct matrix
22
+
23
+ {
24
+
25
+ double x;
26
+
27
+ double y;
28
+
29
+ double z;
30
+
31
+ };
32
+
33
+
34
+
35
+ inline matrix rotation_mat_x(matrix vec, double theta)
36
+
37
+ {
38
+
39
+ matrix vec_tmp;
40
+
41
+
42
+
43
+ vec_tmp.x = vec.x;
44
+
45
+ vec_tmp.y = vec.y * cos(deg_to_rad(theta)) + vec.z * -sin(deg_to_rad(theta));
46
+
47
+ vec_tmp.z = vec.y * sin(deg_to_rad(theta)) + vec.z * cos(deg_to_rad(theta));
48
+
49
+ return vec_tmp;
50
+
51
+ }
52
+
53
+
54
+
55
+ // y
56
+
57
+ inline matrix rotation_mat_y(matrix vec, double theta)
58
+
59
+ {
60
+
61
+ matrix vec_tmp;
62
+
63
+
64
+
65
+ vec_tmp.y = vec.y;
66
+
67
+ vec_tmp.x = vec.x * cos(deg_to_rad(theta)) + vec.z * -sin(deg_to_rad(theta));
68
+
69
+ vec_tmp.z = vec.x * sin(deg_to_rad(theta)) + vec.z * cos(deg_to_rad(theta));
70
+
71
+ return vec_tmp;
72
+
73
+ }
74
+
75
+
76
+
77
+ // z
78
+
79
+ inline matrix rotation_mat_z(matrix vec, double theta)
80
+
81
+ {
82
+
83
+ matrix vec_tmp;
84
+
85
+
86
+
87
+ vec_tmp.z = vec.z;
88
+
89
+ vec_tmp.x = vec.x * cos(deg_to_rad(theta)) + vec.y * -sin(deg_to_rad(theta));
90
+
91
+ vec_tmp.y = vec.x * sin(deg_to_rad(theta)) + vec.y * cos(deg_to_rad(theta));
92
+
93
+ return vec_tmp;
94
+
95
+ }
96
+
97
+ ```

1

文を追加

2018/11/20 12:49

投稿

MOTOZOMBIE
MOTOZOMBIE

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  3次元回転行列を用いて,Matに入ってる3*1行列を回転できるような関数は,OpenCVに存在していますか?
2
2
 
3
-
3
+ 自力で関数を書いてみましたが.あっている気がしないので関数が用意されているのなら使ってみたいです.
4
4
 
5
5
  **環境**
6
6