アカウント名:
パスワード:
ここまでいくと、計算結果の精度(固定小数点で、小数点以下8bit)が足りなくなるんじゃないですかね。
昔(といっても、MS-DOS、V30、コプロなしぐらいのころ)いろいろ遊んで思い出としては、回転行列が小数点以下8bitだと、ぐるぐる回してると目に見えて誤差がたまってきます。で、積算する回転行列は整数部6bit小数部10bitにして、最後に一回だけ移動も含めた座標計算を行う、という形に落ち着きました。
#当初は特に最終目的もなく回転させたくて回転させてたんですが、最終的に出来たのはHOSの起動画面。記憶に頼ったコピーなので、本物とはだいぶかけ離れてましたが、リアルタイムにグルグル回すのはそれなりに楽しかった。
以下のプログラムを作ってみて、IX=6400H,IY=0000Hから回したところ、434回よびだしたところでIX=BF73H,IY=B251Hとなって、誤差が1%を超えました。sinθ≒1/8が190回 [srad.jp]だったので、まあまあ良くなってるんですけど、分数部8ビットだと「もう一声」かなぁ…。
DD E5 PUSH IXFD E5 PUSH IY06 02 LD B,2E1 POP HL7C LD A,H2F CPL5F LD E,ACB 2B SRA E07 RLCA4F LD C,A9F SBC A,A57 LD D,A19 ADD HL,DE59 LD E,C78 LD A,B06 03 LD B,3CB 2C SRA HCB 1D RR L10 FA DJNZ -4D9 EXX47 LD B,A10 E7 DJNZ -23FD 19 ADD IY,DEE5 PUSH HLD9 EXXEB EX DE,HLFD 19 ADD IY,DED1 POP DEB7 OR AED 52 SBC HL,DEEB EX DE,HLDD 19 ADD IX,DEC9 RET
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
結果保持の桁数 (スコア:1)
ここまでいくと、計算結果の精度(固定小数点で、小数点以下8bit)が足りなくなるんじゃないですかね。
昔(といっても、MS-DOS、V30、コプロなしぐらいのころ)いろいろ遊んで思い出としては、
回転行列が小数点以下8bitだと、ぐるぐる回してると目に見えて誤差がたまってきます。
で、積算する回転行列は整数部6bit小数部10bitにして、最後に一回だけ移動も含めた座標計算を行う、という形に落ち着きました。
#当初は特に最終目的もなく回転させたくて回転させてたんですが、最終的に出来たのはHOSの起動画面。記憶に頼ったコピーなので、本物とはだいぶかけ離れてましたが、リアルタイムにグルグル回すのはそれなりに楽しかった。
Z80における「手抜き」回転行列の改良の計算誤差 (スコア:2)
以下のプログラムを作ってみて、IX=6400H,IY=0000Hから回したところ、434回よびだしたところでIX=BF73H,IY=B251Hとなって、誤差が1%を超えました。sinθ≒1/8が190回 [srad.jp]だったので、まあまあ良くなってるんですけど、分数部8ビットだと「もう一声」かなぁ…。