円でエンエンエン
もはや終盤あたりのV2ぐらい画像の使い回しをさせていただくた。MSXで円を描くでSINCOSの計算結果をVPOKEしたらこんな結果になった。
結果から見て予想するに8ドット2色という制限がそーさせているような気もするし、そもそも座標からVPOKEへの変換方法が間違っている気もする。
サインコサインの計算結果が間違っていないのは以下の結果から分かる
処理の順番としては
1.サインコサイン計算
2.座標指定
3.描画
という順番で行っていて、上の確認から間違いが起こっているのは座標指定のところか、描画のところだと考えられる。
座標指定の場合は俺の書いた計算式に間違いがあって、そこをなおせばよくて、描画のところだとVRAMの8ビット2色の制限のせいでそうなっていると考えられる。
どっちを先にするのか、どのみちサインとコサインの計算をアセンブラで実現しなけりゃならないのでそれを先に考えてみる。
まだ漠然としたアイデアだが、これの実現のために二種類の方法がおのずと思い浮かぶ。
A.ベーシック予約領域の命令部分をアセンブラでコールして結果だけもらう。(いわゆる、最近の若者が言うところの「たたく」)
B.三角関数の計算結果のテーブルを用意しておいて、角度に応じて結果をとりだす。
とりあえずBで
三角関数といえば三角法をまとめあげたプトレマイオス(英称トレミー)
僕が考えました。プリーズコールミートレミー。
トレミーはまずエジプト時代からの角度と辺だとかの比とかを、ああしてこうして、三角法にまとまったり三角関数っぽくにもなりジーエンドー。
あるいはバベジ。彼も数表を計算しつつ印刷することを夢見ました。
しかし今はもう二人ともこの世には残念ながらいない。こまった。
ここで三角関数の考え方をおさらいしてみよう
概念を図示すると、赤い部分が三角関数ということになるのが自然とわかる。重力の都合を考えない世界があるとすれば、山から巨大な黒い鉄球が道をごろごろと転がり、あらかじめ用意された三角関数に到達したときに道ががけになっていたとすると、最後ブリッジになっている角度のほうへと玉は飛んでいくだろう。
はたまた銀河鉄道999の発射シーンなど(この後左下45度に急降下したとおもったら一気に右上45にゲインしてひっくりかえった客を救出しようとするパニック映画)
あるいは自分の家に木杭を打って赤ん坊をロープでくくりつけるというトラディショナルな光景を思い出してもらいたい。
赤ちゃんは外へ行こうとするが紐でくるられているので外へは出れない。そうするとおのずと赤ちゃんの軌跡をたどれば円となる。
たいていのものはぐるぐる回っている。
サークルオブフィフスも回っている。
光が丘のひかり寿司のすし時計も回っている
惑星も回っている
サンダーフォースも8方向に回っている
これすべてみな、まっつぐに行きたくてもまわってしまう所以である。
あんまりにいいかげんなのでもう少しヒッポファミリークラブ風にSINとCOSに迫ってみよう。
これがサイン波
こっちがコサイン
かいつまんで説明すると、この曲線が最大値、最小値になるところはそれぞれ
Sin 90と270のところ
Cos 0と180のところ
さらにこの曲線がゼロになるところはそれぞれ
Sin 0と180と360のところ
Cos 90と270のところ
となっている。そこでこのような図を見てみよう。小宮
SinをY軸、Cosをx軸と考えれば、上のような場所に点がつけられるだろう。
いろいろあって・・・・
ジーエンド
円が生まれる