質問編集履歴

1

概要を追加いたしました。

2016/04/11 17:43

投稿

ateliee
ateliee

スコア8

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,59 @@
5
5
  クォータービューでクリックしたスクリーン座標をクォータービューのマップチップ座標に変換する方法がわかりません。
6
6
 
7
7
  またスクリーン上に表示されたチップ番号を求める方法などわかる方がいましたらヒントを教えてもらいたいです。
8
+
9
+
10
+
11
+ #### 概要
12
+
13
+ 正方形の(x * y)チップ並べたタイルマップをZ軸で45度,x軸でX度傾けた
14
+
15
+ 画面上潰れたひし形のクォータービューマップを2D上で表現しています。
16
+
17
+ これを画面のあるポイント(Px,Py)がクォータービューマップ上のどのチップを指しているかを調べたいです。
18
+
19
+ 実装はcocos2d-xにて行っています。
20
+
21
+
22
+
23
+ #### 試したこと
24
+
25
+ マップの変換行列の逆行列を掛け合わせると表現できるのかと考え、実装致しましたがうまくいきませんでした。
26
+
27
+
28
+
29
+ ```
30
+
31
+ // Z軸の回転行列作成
32
+
33
+ Mat4 rMat1 = Mat4();
34
+
35
+ rMat1.rotateZ(45);
36
+
37
+ // X軸の回転行列作成
38
+
39
+ Mat4 rMat2 = Mat4();
40
+
41
+ rMat2.rotateX(30);
42
+
43
+ // 回転行列作成
44
+
45
+ Mat4 m = rMat1 * rMat2;
46
+
47
+ // 逆行列作成
48
+
49
+ m.inverse();
50
+
51
+ // スクリーン上の座標
52
+
53
+ auto vec = Vec3(***);
54
+
55
+ // 座標をマップ座標二変換
56
+
57
+ m.transformPoint(&vec);
58
+
59
+ Size chipSize = Size(32,32);
60
+
61
+ auto vpos = Vec2(floor(vec.x / 32),floor(-vec.y / 32));
62
+
63
+ ```