タグ

ブックマーク / srad.jp/~yasuoka (3)

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

    昨日の日記の読者から、Alan W. Paethの「A Fast Algorithm for General Raster Rotation」(Proceedings Graphics Interface '86 / Vision Interface '86 (May 1986), pp.77-81)という論文をお教えいただいた。以下の3つの三角行列の積で回転行列をシミュレートする、という優れモノで、かなり速い上に誤差が小さい。

  • 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 で近似するのと同じ
  • UTF-16の誕生 | yasuokaの日記 | スラド

    たとえば「16ビットのコードを2つ組み合わせることで急場をしのいだ」といった書き方は、いかにも行き当たりばったりでサロゲートペアを作ったように見えますが、実際には最初から計画的にサロゲート用のコードはリザーブしてあったわけですよね。 「最初から計画的にサロゲート用のコードはリザーブしてあった」というのは、どう考えても嘘だ。この際だからUTF-16の誕生に関して、私の知る限りのことを記しておこうと思う。 Joseph Dermansly BeckerがJTC1/SC2/WG2に『Proposal for Extended UCS-2 being also a Proposal for Extended Unicode』を提出したのは、1993年4月のことだ。後にJTC1/SC2/WG2 N883と呼ばれるこの文書において、Beckerは、High Half Zoneとして2C00~2FFFを

    yowa
    yowa 2007/02/13
  • 1