teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2020/09/24 07:29

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- オブジェクトを中心に位置固定で回転させる方法が知りたい 数式が知りたい。
1
+ OpenGL 回転原点を中心に回転る方法
body CHANGED
@@ -1,16 +1,52 @@
1
- 提示コードですがクォータニの回転行列を実装しつもりなのですが上手く回転出来ませんこれはどうすればいいのでしょうか?またオブジェクトの位置動かさないで自転する方法を教えてもらいたいです。
1
+ **ブジェクトを中心に位置を固定でそまま回転**させのですがどうすればいいのでしょうか?今起きてる現象は**視点中心に回**するうことなのですが自分**は原点を中心に回**転させたいです。
2
2
 
3
3
 
4
+ //視点を中心に回転してしまっている現状の画像
5
+ ![イメージ説明](74856c29e8cb18b29d473c9381ff9d0d.png)
4
6
 
7
+ Github: https://github.com/Shigurechan/OpenGL
5
8
 
9
+
6
10
  ```cpp
7
11
 
12
+ //頂点データ
13
+ vertex[0].Position[0] = -1;
14
+ vertex[0].Position[1] = 1;
15
+ vertex[0].Position[2] = -10;
16
+
17
+ vertex[1].Position[0] = -1;
18
+ vertex[1].Position[1] = -1;
19
+ vertex[1].Position[2] = -10;
20
+
21
+ vertex[2].Position[0] = 1;
22
+ vertex[2].Position[1] = -1;
23
+ vertex[2].Position[2] = -10;
24
+
25
+ vertex[3].Position[0] = 1;
26
+ vertex[3].Position[1] = 1;
27
+ vertex[3].Position[2] = -10;
28
+ ```
29
+
30
+ ```cpp
8
- //回転行列を設定
31
+ //回転行列
9
32
  void Game::Set_rotate(float xx,float yy,float zz,float r)
10
33
  {
11
- glm::quat someQuat = glm::quat(cos(r / 2),xx, yy, zz);
34
+ glm::quat someQuat = glm::angleAxis(r,glm::vec3(xx,yy,zz));
12
- glm::mat4 ro = glm::mat4(someQuat);
35
+ glm::mat4 ro = glm::toMat4(someQuat);
13
-
36
+
14
37
  memcpy(rotate, glm::value_ptr(ro), sizeof(float) * 16);
38
+
15
39
  }
40
+
41
+ ```
42
+
43
+ ```cpp
44
+
45
+ //ワールド行列を計算
46
+ void Game::CreateWorldMatrix()
47
+ {
48
+ glm::mat4x4 t = glm::make_mat4(move) * glm::make_mat4(scale) * glm::make_mat4(rotate);
49
+ memcpy(wordlMatrix,glm::value_ptr(t),sizeof(float) * 16);
50
+ }
51
+
16
52
  ```