投稿

ラベル(クォータニオン)が付いた投稿を表示しています

HTMLでクォータニオン(quaternion) (2回目)

イメージ
HTMLでクォータニオン(quaternion) ( 2 回目 )   (by ULproject for HTML,JavaScript,canvas)   行列 (matrix)の代わりに四元数(しげんすう) (quaternion)を使用して見ました   今回はクォータニオンを行列に変換して ベクトルとの積を求めています       以後、四元数と行列を大文字、それ以外を 小文字で表します   このシリーズは、プログラム を 出来るだけ似せて 移植していますので、解説を省略しています 式などに関する説明も省略していますので 詳しくは N88-BASICでクォータニオン(quaternion) (2回目) を見てください   HTML,JavaScript,canvasは、使い慣れていない ため、不具合などが多々あると思いますが、 ご了承ください blg~.zip(quad002.html)は 以下のリンクからダウンロードできます VL-BASIC(N88-BASIC互換?)ホームページ Readme.txtを読んで遊んで下さい   動作は同じなので前回のHTMLのリンクと 行列での動画を貼っておきます quad001.htmlへのリンク 操作方法 //---------------------------------------------------------------------- //  1  2           |  1モデルモード 2ビューモード //                 | //  p  @  [  enter |  p左傾き    @上に移動  [右傾き   enter初期位置へ //  ;  :  ]        |  ;左に移動  :下に移動  ]右に移動 //                 | //    ↑            |          ↑機首下げ // ← ↓ →          | ←左旋回  ↓機首上げ  →右旋回 //                 | //  /  \(_)  +shift|  /後進  \(_)前進                +shiftで速く移動 //---------------------------------------------------------

HTMLでクォータニオン(quaternion) (1回目)

イメージ
2021/7/3(土) HTMLでクォータニオン (quaternion)  (1回目)   (by ULproject for HTML,JavaScript,canvas)   行列 (matrix)の代わりに四元数(しげんすう) (quaternion)を使用して見ました。     以後、四元数と行列を大文字、それ以外を 小文字で表します   このシリーズは、プログラム を 出来るだけ似せて 移植していますので、解説を省略しています 式などに関する説明も省略していますので 詳しくは N88-BASICでクォータニオン(quaternion) (1回目) を見てください   HTML,JavaScript,canvasは、使い慣れていない ため、不具合などが多々あると思いますが、 ご了承ください   JavaScriptでは、 Q[0]~Q[3]で回転四元数 Q[4]~Q[7]で並進四元数 として 複合四元数を表現しています blg~.zip(quad001.html)は 以下のリンクからダウンロードできます VL-BASIC(N88-BASIC互換?)ホームページ Readme.txtを読んで遊んで下さい quad001.htmlへのリンク 操作方法 //---------------------------------------------------------------------- //  1  2           |  1モデルモード 2ビューモード //                 | //  p  @  [  enter |  p左傾き    @上に移動  [右傾き   enter初期位置へ //  ;  :  ]        |  ;左に移動  :下に移動  ]右に移動 //                 | //    ↑            |          ↑機首下げ // ← ↓ →          | ←左旋回  ↓機首上げ  →右旋回 //                 | //  /  \(_)  +shift|  /後進  \(_)前進                +shiftで速く移動 //-------------------------------------------------------

N88-BASICでクォータニオン(quaternion) (2回目)

イメージ
2021/6/27(日) N88-BASICでクォータニオン(quaternion) (2 回 目 )   (by ULproject for N88-BASIC,NL-BASIC) 行列 (matrix)の代わりに四元数(しげんすう) (quaternion)を使用して見ました。   今回は、四元数から行列を作り 回転移動させました   p = (x, y, z) q = (a, b, c) Q = (w, q) = (w, a, b, c) p'= QpQ~ p'= (w 2 -q・q)p+2(q・p)q+2w(q×p)   (w 2 -q・q)p  |w 2 -a 2 -b 2 -c 2  0 0||x| =|0 w 2 -a 2 -b 2 -c 2  0||y|  |0 0 w 2 -a 2 -b 2 -c 2 ||z|   (q・p)q =(ax+by+cz)q =(a 2 x+aby+acz,bax+b 2 y+bcz,cax+cby+c 2 z) |a 2  ab ca||x| =|ab b 2  bc||y|  |ca bc c 2 ||z|   (q×p) =(bz-cy, cx-az, ay-bx) =(bz,cx,ay)-(cy,az,bx)    | 0 -c  b||x| =| c  0 -a||y|  |-b  a  0||z|   w 2 +a 2 +b 2 +c 2  = 1よりw 2  = 1-a 2 -b 2 -c 2     p'= QpQ~ = (w 2 -q・q)p+2(q・p)q+2w(q×p)    |w 2 -a 2 -b 2 -c 2 +2a 2  2(ab-wc) 2(ca+wb)||x| =|2(ab+wc) w 2 -a 2 -b 2 -c 2 +2b 2  2(bc-wa)||y|  |2(ca-wb) 2(bc+wa) w 2 -a 2 -b 2 -c 2 -2c 2 ||z|    |1-2(b 2 +c 2 )  2(ab-wc)  2(ca+wb)||x| =| 2(ab+wc) 1-2(c 2 +a 2 )  2(bc-wa)||y|  | 2(ca-wb)  2(bc+wa) 1-2(a 2 +b 2 )||z|   並進移動 T=(0,tx,ty,tz)を入れると p&#

N88-BASICでクォータニオン(quaternion) (1回目)

イメージ
2021/6/25(金) N88-BASICでクォータニオン(quaternion)  (1回目) (by ULproject for N88-BASIC,NL-BASIC)   行列 (matrix)の代わりに四元数(しげんすう) (quaternion)を使用して見ました。       以後、四元数と行列を大文字、それ以外を 小文字で表します   四元数は複素数 (2元)の四元版です。 ii = jj = kk = -1 ij =  k, jk =  i, ki =  j ji = -k, kj = -i, ik = -j となる、 i,j,kを定義します。   複素数      c  = a + bi 共役複素数  c~ = a - bi (cにオーバーバーですがここではc~ とします。 ) 四元数      Q  = a + bi + cj + dk 共役四元数  Q~ = a - bi - cj - dk   複素数は複素平面上の点 cを表せます。   四元数では 1つの実数wと三次元空間 の点 q=(x,y,z)を表すことにします。   Q = w + ix + jy + kz   = (w, x,y,z)   = (w, q) wはスカラー、qはベクトル i,j,kがx,y,z軸の単位ベクトル になっているのに似ています。 q = (x,y,z) = ix + iy + kz   四元数の積 Q   =  w  +  ix  +  jy  +  kz Q' =   w' +  ix' +  jy' +  kz'   QQ' =  ww'+ wix'+ wjy'+ wkz' + ixw'+iixx'+ijxy'+ikxz' + jyw'+jiyx'+jjyy'+jkyz' + kzw'+kizx'+kjzy'+kkzz'       =  ww'+ wix'+ wjy'+ wkz'     + ixw'-  xx'+ kxy'- jxz'     + jyw'- kyx'-  yy'+ iyz&