タグ

2018年10月16日のブックマーク (1件)

  • Z80における「手抜き」回転行列 | yasuokaの日記 | スラド

    ネットサーフィンしていたところ、このtweetで35年ほど前の悪行がバラされてしまっていたので、当時の記憶を辿りつつ、ざっと書いてみようと思う。 画面中心を(0,0)とするxy座標系において、適当な微小角度θで回転をおこないたい。θの値は、まあ何でも良くて、とにかく見た目が「回って」いる雰囲気を出したい。ただ、対象とするCPUがZ80なので、乗算は自分で実装するしかなく、そのあたりの「手抜き」を考える。 微小角度θにおいてcosθは1に近い値なので、ここの実装を簡単にすべく、とりあえずcosθ=1-2-kとしてみる。そうすると、sin2θ=2(1-k)-2-2kとなるので、小さい方の項を捨てれば、だいたいsinθ≒2(1-k)/2。つまり、kが奇数なら実装が簡単となり、たとえばk=7なら、cosθ=127/128, sinθ≒1/8となる。 HLレジスタのHレジスタに符号付整数、Lレジスタ

    yowa
    yowa 2018/10/16
    k=3 なら cosθ=7/8, sinθ≒1/2=sin30° 。「正三角形をおおまかに描きたいときは底辺8:高さ7にするとよい」にという話に通じる。またこれは √3=1.732... を 1.75 = 7/4 で近似するのと同じ