🌸 「なでしこ」
>
🍯 「貯蔵庫」
🍯 なでしこ3貯蔵庫
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
ログイン
していません。
[
📌文法
] [
🎨命令一覧
]
[編集モード] 四元数操作
四元数の四則演算などを実装しました。
プログラム:
(→大)
(→textarea)
(→左右に配置)
#!注意!このプログラムの作者は、プログラミング知識に乏しいため、あまり良いプログラムとは言えないものとなっていますが、ご了承ください。 /* 四元数を扱うときには、[実部、iの係数、jの係数、kの係数]のように配列で表記してください。 例: 1+2i+3j+4k→[1,2,3,4] 1+3k→[1,0,0,3] このプログラム上では、以下の関数が定義されています。 【四則演算】 ・PにQを四元数加算 →四元数P、Qの和を返します。 ・PからQを四元数減算 →四元数P、Qの差を返します。 ・PにQを四元数乗算 →四元数P、Qの積を返します。 ・PからQを四元数除算 →四元数P、Qの商を返します。 なお、以上の四則演算の関数は、すべて左から順に計算を行います。 【四元数の操作】 ・Qの四元数共役 →四元数Qの共役を返します。 ・Qの四元数絶対値 →四元数Qの絶対値を返します。 ・Qの四元数平方絶対値 →四元数Qの絶対値の平方(2乗)を返します。四元数の絶対値を出すときには根号が用いられるため、絶対値の平方を扱うときはこちらの関数を用いると計算誤差が少なくなります。 ・Qの四元数逆数 →四元数Qの逆数を返します。 ・Qの四元和表記 →四元数Qを、「a+bi+cj+dk」の形で表して、その文字列を返します。 以上の内容は、以下のURL先のGoogleDocumentにまとめてあります。 https://docs.google.com/document/d/16AErG1O5CY1M_Rh05Qldlzm7-zIycvdahaLj2JGWqb0/edit?usp=sharing ご活用ください。 ©2023 Nushi of Uri */ /*利用例:(1+2i+3j+4k)*(5+6i+7j+8k)を計算して表示。 「(1+2i+3j+4k)(5+6i+7j+8k)の計算結果は以下の通りです。」と表示。 [1,2,3,4]に[5,6,7,8]を四元数乗算して、それの四元和表記を表示。 */ #!注意!これ以下を消去したり、変更を加えたりしないでください。 ●(PにQを)四元数加算とは A=P@0 B=P@1 C=P@2 D=P@3 E=Q@0 F=Q@1 G=Q@2 H=Q@3 実部=A+E 第一虚部=B+F 第二虚部=C+G 第三虚部=D+H それ=[実部、第一虚部、第二虚部、第三虚部] ここまで。 ●(PからQを)四元数減算とは A=P@0 B=P@1 C=P@2 D=P@3 E=Q@0 F=Q@1 G=Q@2 H=Q@3 実部=A-E 第一虚部=B-F 第二虚部=C-G 第三虚部=D-H それ=[実部、第一虚部、第二虚部、第三虚部] ここまで。 ●(PにQを)四元数乗算とは A=P@0 B=P@1 C=P@2 D=P@3 E=Q@0 F=Q@1 G=Q@2 H=Q@3 実部=A*E-B*F-C*G-D*H 第一虚部=A*F+B*E+C*H-D*G 第二虚部=A*G-B*H+C*E+D*F 第三虚部=A*H+B*G-C*F+D*E それ=[実部、第一虚部、第二虚部、第三虚部] ここまで。 ●(Qの)四元数共役とは A=Q@0 B=Q@1 C=Q@2 D=Q@3 それ=[A、-B、-C、-D] ここまで。 ●(Qの)四元数絶対値とは Qに(Qの四元数共役)を四元数乗算して、Qに代入。 AにQ@0を代入。 Aの平方根をそれに代入。 ここまで。 ●(Qの)四元数平方絶対値とは Qに(Qの四元数共役)を四元数乗算して、Qに代入。 AにQ@0を代入。 Aをそれに代入。 ここまで。 ●(Qの)四元数逆数とは Qの四元数共役をQ1に代入。 Qの四元数平方絶対値をQ2に代入。 A=Q1@0 B=Q1@1 C=Q1@2 D=Q1@3 それに[A/Q2、B/Q2、C/Q2、D/Q2]を代入。 ここまで。 ●(PをQで)四元数除算とは Pに(Qの四元数逆数)を四元数乗算して、それに代入。 ここまで。 ●(Nの)文字列符号とは Nの符号を判定に代入 もし判定=-1ならば それに「-」を代入。 違えばもし判定=0ならば それに「」を代入。 違えばもし判定=1ならば それに「+」を代入。 ここまで。 ここまで。 ●(Qの)四元和表記とは A=Q@0 B=Q@1 C=Q@2 D=Q@3 もしA=0なら A=「」 もしB=0なら B=「」 もしC=0なら C=「」 もしD=0なら D=「」 返値に(Aを文字列変換)&(Bの文字列符号)&((Bの絶対値)を文字列変換)&「i」&(Cの文字列符号)&((Cの絶対値)を文字列変換)&「j」&(Dの文字列符号)&((Dの絶対値)を文字列変換)&「k」を代入 返値の「+1i」を「+i」に置換して返値に代入。 返値の「+1j」を「+j」に置換して返値に代入。 返値の「+1k」を「+k」に置換して返値に代入。 返値の「-1i」を「-i」に置換して返値に代入。 返値の「-1j」を「-j」に置換して返値に代入。 返値の「-1k」を「-k」に置換して返値に代入。 返値の「-0i」を「」に置換して返値に代入。 返値の「-0j」を「」に置換して返値に代入。 返値の「-0k」を「」に置換して返値に代入。 もし(返値で「+」が何文字目か)=1ならば 返値の1から1だけ文字削除して返値に代入。 もし返値=「」ならば 返値に「0」を代入。 それに返値を代入。 ここまで。 ●(QをNで)四元数四捨五入とは Q[0]をNで小数点四捨五入して、Q1に代入。 Q[1]をNで小数点四捨五入して、Q2に代入。 Q[2]をNで小数点四捨五入して、Q3に代入。 Q[3]をNで小数点四捨五入して、Q4に代入。 それ=[Q1,Q2,Q3,Q4] ここまで。
▶ 実 行 [F9]
クリア
一時保存
デバッグ
ブレイクポイント:
→ 再開
↓ 一行次へ
×
キャンバス: 幅
× 高
2208a837a3ecb283e224397e2e715bff
2666
上書き保存
表示ページ
→直前に実行(または一時保存)した内容を復元
なでしこバージョン: v
素材のアップロード
ログイン
するとファイルをアップロードできます。