« 非連続波形の表示がうまくいかない | トップページ | 波形を重ねて表示する機能がひとまず動いた »

2022.03.13

波形の重ね合わせプログラムが破綻した原因

波形を重ね合わせて表示するプログラムが破綻した原因はデータ構造にありました。

Cosmo-Zでは「イベント」と言って、放射線などのイベントが発生したときだけデータを記録するというモードがあります。

このイベントを上手に扱おうと、波形データの内部構造を2次元配列にして、下の図のような構造に書き換えました。

Dataarray

不連続な波形を扱うためこのような仕組みに書き換えたのですが、この変更が間違いでした。

各data[n]は長さが任意なので、data[n][i]を指すポインタを1増やしたいときには、iがdata[n].Lengthと比較してオーバーするならnを1増やすということをしなければなりません。

これは想像以上に面倒な処理でした。

非常に注意深くプログラミングすることで無事に表示はできるようになりましたが、描画速度は遅くなりました。

データはフラットにしなければならないと痛感し元に戻すことにしました。

結局のところ、データは連続した1次元配列にして、代わりに各イベントのスタート地点を示すcstart[]と、イベントの長さを示すclen[]いう配列を用意することにしました。

|

« 非連続波形の表示がうまくいかない | トップページ | 波形を重ねて表示する機能がひとまず動いた »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 非連続波形の表示がうまくいかない | トップページ | 波形を重ねて表示する機能がひとまず動いた »