質問編集履歴

1

文章とタイトルを編集しました。

2020/09/24 07:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- オブジェクトを中心に位置固定で回転させる方法が知りたい 数式が知りたい。
1
+ OpenGL 回転原点を中心に回転る方法
test CHANGED
@@ -1,8 +1,16 @@
1
- 提示コードすがクォータニオンの回転行列を実装しつもりなのですが上手く回転出来ませんこれはどうすればいいのでしょうか?またオブジェクトの位置動かさで自転する方法を教えてもらいたいです。
1
+ **オブジェクトを中心に位置を固定まま回転**させのですがどうすればいいのでしょうか?今起きてる現象は**視点中心に回転**するということすが分**は原点を中心に回**させたいです。
2
2
 
3
3
 
4
4
 
5
5
 
6
+
7
+ //視点を中心に回転してしまっている現状の画像
8
+
9
+ ![イメージ説明](74856c29e8cb18b29d473c9381ff9d0d.png)
10
+
11
+
12
+
13
+ Github: https://github.com/Shigurechan/OpenGL
6
14
 
7
15
 
8
16
 
@@ -12,20 +20,84 @@
12
20
 
13
21
 
14
22
 
23
+ //頂点データ
24
+
25
+ vertex[0].Position[0] = -1;
26
+
27
+ vertex[0].Position[1] = 1;
28
+
29
+ vertex[0].Position[2] = -10;
30
+
31
+
32
+
33
+ vertex[1].Position[0] = -1;
34
+
35
+ vertex[1].Position[1] = -1;
36
+
37
+ vertex[1].Position[2] = -10;
38
+
39
+
40
+
41
+ vertex[2].Position[0] = 1;
42
+
43
+ vertex[2].Position[1] = -1;
44
+
45
+ vertex[2].Position[2] = -10;
46
+
47
+
48
+
49
+ vertex[3].Position[0] = 1;
50
+
51
+ vertex[3].Position[1] = 1;
52
+
53
+ vertex[3].Position[2] = -10;
54
+
55
+ ```
56
+
57
+
58
+
59
+ ```cpp
60
+
15
- //回転行列を設定
61
+ //回転行列
16
62
 
17
63
  void Game::Set_rotate(float xx,float yy,float zz,float r)
18
64
 
19
65
  {
20
66
 
21
- glm::quat someQuat = glm::quat(cos(r / 2),xx, yy, zz);
67
+ glm::quat someQuat = glm::angleAxis(r,glm::vec3(xx,yy,zz));
22
68
 
23
- glm::mat4 ro = glm::mat4(someQuat);
69
+ glm::mat4 ro = glm::toMat4(someQuat);
24
70
 
25
-
71
+
26
72
 
27
73
  memcpy(rotate, glm::value_ptr(ro), sizeof(float) * 16);
28
74
 
75
+
76
+
29
77
  }
30
78
 
79
+
80
+
31
81
  ```
82
+
83
+
84
+
85
+ ```cpp
86
+
87
+
88
+
89
+ //ワールド行列を計算
90
+
91
+ void Game::CreateWorldMatrix()
92
+
93
+ {
94
+
95
+ glm::mat4x4 t = glm::make_mat4(move) * glm::make_mat4(scale) * glm::make_mat4(rotate);
96
+
97
+ memcpy(wordlMatrix,glm::value_ptr(t),sizeof(float) * 16);
98
+
99
+ }
100
+
101
+
102
+
103
+ ```