バージョン1の欠点は陰線処理のいい加減さだった。今回の陰線処理も基本は同じ画面の手前から描画を始めてその時点の最大値あるいは最小値をこえる部分だけ描画する手法だ。でも、最大値/最小値のデータの作り方を変更し、地道な交点計算を追加してきれいに見えるようになった。かな?
やはりCPUのスピードアップというものはすごいもので、好き放題にプログラミングしてもそこそこの速度でこなしてくれる。高速CPUはアマグラマーにやさしい。無駄のおおいワイアリングだがひととおり説明していこう。info-lvにはWireFrameGraph.llbという名前でデビューさせようと思っているのでそのときにはじっくり苦労の跡を探してもらってもいいし、たまに活用してもらうのもよいだろう。
さて、陰線処理といってもなじみのない人もいるだろうからスナップショットでイメージを掴んでもらおう。グラフの中の制御器が描画線数だ。
0番目は赤と黄色の水平線が入っているだけだ。赤が最大値のデフォルトデータで、黄色が最小値のデフォルトデータ。最小値は描画するデータの最大値よりも大きい値をデフォルトにしている。最大値は描画するデータの最小値よりも小さい値をデフォルトにしている。
最大値データよりも大きいか、最小値データよりも大きいデータが描画される。描画されたときには最大/最小データも更新される。下の一本目のグラフは少し分かりにくいが、次に行ってみよう。
これを見れば一目瞭然だね。あとは説明なしで流してみよう。
さて、何が面倒なのだろう。
答えは、最大/最小データのx座標のセットと描画データのx座標のセットが一致しないことだ。次回はその辺を見てみよう。