[離散化](Discretizator)を使用して、浮動少数値または整数値をより離散させ、ある程度の精度を犠牲にして値の範囲をより管理しやすいサブセットに縮小します。[離散化](Discretizator)は、[シェイプ コントロール](Shape Control)サブオペレータの入力データの最適化を支援しますが、他の目的のためにも使用できます。
離散化は、[ベース](Base)および[ステップ](Step)の値に基づきます。受け取る各値に対して、[ステップ](Step)値は正または負の整数で操作され、結果を可能な限り入力に近づけるために[ベース](Base)値に追加されます。次に、入力はこの値に丸められます。[ベース](Base)が「b」で[ステップ](Step)が「s」の場合、サブオペレータからの可能な出力値は、b, b+s、b-s、b+2s、b-2s、b+3s、b-3s などになります。
受け取る値は、最も近い離散値に丸められます。受け取る値が正確に離散値の間にある場合は、隣接した最も高い値に丸められます。たとえば、[ベース](Base)が 0 で[ステップ](Step)が 1 の場合、入力値 1.5 の出力が 2 になり、入力値 -1.5 の出力が -1 になります。
[離散化](Discretizator)の使用例は、ファイル GridAndShapeControl.max にあります。フローには、10,000 個以上のパーティクルが含まれ、2 つの[データ](Data)オペレータ(両方とも開始時には無効になっています)が組み込まれています。
最初の[データ](Data)オペレータは[離散化](Discretizator)を使用しません。[データ](Data)オペレータをオンにし、すべてのパーティクルのジオメトリ シェイプを計算するのにどれくらい時間がかかるかに注意してください。高速の PC を使用していても、計算がかなり遅くなります。
次に、最初の[データ](Data)オペレータをオフにし、2 番目の[データ](Data)オペレータをオンにします。2 番目の[データ](Data)オペレータはデータ フローの離散化を使用し、パーティクル シェイプをはるかに速く生成します。この理由は、オペレータが受け取るデータ ストリームを次数 1 の[ステップ](Step)で離散化するからです。最初の[データ](Data)オペレータの場合は、各パーティクルのシェイプが個別に計算されます。2 番目の[データ](Data)オペレータの場合は、値が全体の次数にスナップされるので、可能な値のセットが大幅に削減されています。2 番目の[データ](Data)オペレータの[シェイプ コントロール](Shape Control)サブオペレータで離散最適化がオンになっているので、多くても 360 個のパーティクルのシェイプが生成されるだけです。これは、次数 1 の[ステップ](Step)で生成できる異なる角度値の最大数であり、これらのシェイプはパーティクル間で共有されます。この 2 つのケースの違いは肉眼では区別できませんが、2 番目の場合ははるかに速く動作します。
つまり、[離散化](Discretizator)サブオペレータは、[シェイプ コントロール](Shape Control)サブオペレータ向けの便利な最適化ツールです。