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

回答編集履歴

6

不足を追記

2020/04/10 09:51

投稿

fana
fana

スコア12286

answer CHANGED
@@ -44,7 +44,8 @@
44
44
  ![イメージ説明](7bf80f24f0268b18976d61e977b3e516.png)
45
45
 
46
46
  図内オレンジ色矢印で示した方向に回転を行いたいとすれば,そのためには「赤い「回転軸」と平行な単位ベクトルが得られればよい」という話までは,これまでのやりとりからOKかと思います.
47
+ 青矢印はオレンジ色の円弧の接線方向ベクトルです.
47
- で,この赤い軸は図内の緑破線と青矢印の両者に直交していますから,この軸の方向を向くベクトルというのは両者の方向を表すベクトルの外積から求まるというのもOKですか?
48
+ この赤い軸は図内の緑破線と青矢印の両者に直交していますから,この軸の方向を向くベクトルというのは両者の方向を表すベクトルの外積から求まるというのもOKですか?
48
49
  (OKじゃない場合は外積について復習されたい)
49
50
 
50
51
  * 前者(緑破線)は説明するまでもなく posとtargetVとを通る直線ですから,この方向のベクトルは余裕で算出できますな.

5

コメント内容を回答内にもってきた

2020/04/10 09:50

投稿

fana
fana

スコア12286

answer CHANGED
@@ -34,4 +34,21 @@
34
34
  3. 1.とは逆の座標変換を行って,元の座標系にデータを戻す
35
35
 
36
36
  という処理を行えば良いです.
37
- (上記の1.と3.は実際には単なる平行移動(加減算)です.)
37
+ (上記の1.と3.は実際には単なる平行移動(加減算)です.)
38
+
39
+ ---
40
+
41
+ 図を貼るために,コメント内容をこちらに持って来ましたが,
42
+ 下図のような回転の軸(axis)を算出する方法がわからないということですか?
43
+
44
+ ![イメージ説明](7bf80f24f0268b18976d61e977b3e516.png)
45
+
46
+ 図内オレンジ色矢印で示した方向に回転を行いたいとすれば,そのためには「赤い「回転軸」と平行な単位ベクトルが得られればよい」という話までは,これまでのやりとりからOKかと思います.
47
+ で,この赤い軸は図内の緑破線と青矢印の両者に直交していますから,この軸の方向を向くベクトルというのは両者の方向を表すベクトルの外積から求まるというのもOKですか?
48
+ (OKじゃない場合は外積について復習されたい)
49
+
50
+ * 前者(緑破線)は説明するまでもなく posとtargetVとを通る直線ですから,この方向のベクトルは余裕で算出できますな.
51
+ * 後者(青矢印)の側に関しては,コメント内では「接線方向ベクトル」と述べましたが,オレンジの矢印と同じ平面上に乗っている(且つ緑破線と平行でない)ならば別に何でもよいのですぞ.求めたいものが回転の軌跡(オレンジ矢印)が乗る平面の法線なのであるから,当該平面を定めるために緑破線の他に平面に沿うベクトルがもう一本欲しいと言うだけの話ですからな.
52
+ で,こいつをどう用意するのか?に関しては,**行いたい回転の方向に合わせて都度都度適切に用意するしかないので頑張ってどうぞ!**,ということになります(ヒントはコメントに書いている).
53
+ ただし,ある特定の(方向の)回転に関してだけ考えればよくて,且つ,扱える範囲にも制約を設けて良いならば,例えば(0,1,0)とか固定で与えることが可能な世界は存在するでしょうから,コメントにて「まずは(0,1,0)でやってみたら?」とか言っているのはそういうことですぞ.
54
+ 青矢印にある固定の方向を与えることを考えてみれば,targetVとposの位置関係次第ではこの青矢印と緑破線が平行になってしまい両者の外積から軸を算出できないということがわかるでしょう.しかしこれは逆に言えばそうなる位置関係を運用上避けることができるならば固定でもOKじゃん?という話ですぞ.

4

足りない言葉を追加

2020/04/10 09:45

投稿

fana
fana

スコア12286

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  例えば,「地面からの高さを保ったまま動かしたい」みたいな話が追加で存在すれば,下図の様に回転させるべき方向が定まります.
13
13
  このとき,「回転軸」というのは下図の赤い破線(と平行な軸)のことです.
14
14
  回転の軌跡を円で書いたときに,その円が乗る平面と直交する方向ベクトルです.
15
- 竹とんぼで言えば,棒の部分です.
15
+ 竹とんぼで言えば,棒の部分の向きです.
16
16
  この例であれば,この軸の方向を表すベクトルというのはわざわざ計算するまでもなく定数で与えることができるでしょう.
17
17
  (単位ベクトルして表すとしたら,地面と鉛直な方向というのがY軸と平行なのであれば (0,1,0) あるいは (0,-1,0) として.)
18
18
 

3

誤字修正

2020/04/08 08:56

投稿

fana
fana

スコア12286

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  ちなみに,上記の例での(0,1,0)とか(0,-1,0)という単位ベクトルというのは,**軸の方向**を表すベクトルであって,軸がどこにあるのか?という位置については何も表していません.
26
26
 
27
27
  {pos,targetV,回転軸の方向を示す単位ベクトル}の値がある座標系の上で与えられているときに,
28
- そこらでググって出てくるような回転の話を用いると,回転軸は**その座標の原点を通る**ことになります.
28
+ そこらでググって出てくるような回転の話を用いると,回転軸は**その座標の原点を通る**ことになります.
29
29
  つまり,上図で言えば,targetVのXおよびZ座標が共に0である場合でないと,この図の丸い矢印のような回転軌跡にはなりません.
30
30
  なので,この図のように「回転軸がtaregetVを通って欲しい」場合には,
31
31
 

2

原点周りだという話を追記

2020/04/08 08:55

投稿

fana
fana

スコア12286

answer CHANGED
@@ -13,9 +13,25 @@
13
13
  このとき,「回転軸」というのは下図の赤い破線(と平行な軸)のことです.
14
14
  回転の軌跡を円で書いたときに,その円が乗る平面と直交する方向ベクトルです.
15
15
  竹とんぼで言えば,棒の部分です.
16
- この例であれば,この軸を表すベクトルというのはわざわざ計算するまでもなく定数で与えることができるでしょう.
16
+ この例であれば,この軸の方向を表すベクトルというのはわざわざ計算するまでもなく定数で与えることができるでしょう.
17
17
  (単位ベクトルして表すとしたら,地面と鉛直な方向というのがY軸と平行なのであれば (0,1,0) あるいは (0,-1,0) として.)
18
18
 
19
19
  ![イメージ説明](5cdc413d494290977a0513b7ce36155b.png)
20
20
 
21
- どちらに回転させるべきか? が.その時々のデータ値によって定まるような話である場合には,回転軸は適切な演算によって求めねばならないでしょうが,その計算内容というのは前述の通り「やりたいこと次第」ということになります.
21
+ どちらに回転させるべきか? が.その時々のデータ値によって定まるような話である場合には,回転軸は適切な演算によって求めねばならないでしょうが,その計算内容というのは前述の通り「やりたいこと次第」ということになります.
22
+
23
+ ---
24
+
25
+ ちなみに,上記の例での(0,1,0)とか(0,-1,0)という単位ベクトルというのは,**軸の方向**を表すベクトルであって,軸がどこにあるのか?という位置については何も表していません.
26
+
27
+ {pos,targetV,回転軸の方向を示す単位ベクトル}の値がある座標系の上で与えられているときに,
28
+ そこらでググって出てくるような回転の話を用いると,回転軸は**その座標剣の原点を通る**ことになります.
29
+ つまり,上図で言えば,targetVのXおよびZ座標が共に0である場合でないと,この図の丸い矢印のような回転軌跡にはなりません.
30
+ なので,この図のように「回転軸がtaregetVを通って欲しい」場合には,
31
+
32
+ 1. 位置targetVが原点になるような座標系にデータを一旦全て座標変換する
33
+ 2. その座標系の上で回転処理を行う
34
+ 3. 1.とは逆の座標変換を行って,元の座標系にデータを戻す
35
+
36
+ という処理を行えば良いです.
37
+ (上記の1.と3.は実際には単なる平行移動(加減算)です.)

1

言い回しをやや修正

2020/04/08 08:54

投稿

fana
fana

スコア12286

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  (↑質問への追記・修正の依頼 の欄より引用)
4
4
 
5
- 中心点の座標(target)だけ与えられて「回転しろ」と言われても,下図のように1点を中心に回転する方向というのは無数に存在するので困るわけです.
5
+ 中心点の座標(target)だけ与えられて「回転しろ」と言われても,下図のように1点を中心にしてその周りを回転する方向というのは無数に存在するので困るわけです.
6
6
 
7
7
  ![イメージ説明](7ca6325366f9cb5523bee455f2362edc.png)
8
8
 
@@ -10,10 +10,11 @@
10
10
  どうすれば求まるのか?というのは,「どのように回転させたいのか?」という,やりたいこと次第です.
11
11
 
12
12
  例えば,「地面からの高さを保ったまま動かしたい」みたいな話が追加で存在すれば,下図の様に回転させるべき方向が定まります.
13
- このとき,「回転軸」というのは下図の赤い破線のことです.
13
+ このとき,「回転軸」というのは下図の赤い破線(と平行な軸)のことです.
14
14
  回転の軌跡を円で書いたときに,その円が乗る平面と直交する方向ベクトルです.
15
15
  竹とんぼで言えば,棒の部分です.
16
+ この例であれば,この軸を表すベクトルというのはわざわざ計算するまでもなく定数で与えることができるでしょう.
16
- この例であれば,この軸を表すベクトルというのはわざわざ計算るまでもなく定数で与えるこができるでょう.(地面と鉛直な方向というのがY軸と平行なのであれば (0,1,0) あるいは (0,-1,0) として.)
17
+ (単位ベクトルして表すとしたら,地面と鉛直な方向というのがY軸と平行なのであれば (0,1,0) あるいは (0,-1,0) として.)
17
18
 
18
19
  ![イメージ説明](5cdc413d494290977a0513b7ce36155b.png)
19
20