Esempio n. 1
0
    public static Texture2D GenerateHistogramTexture(VolumeTextureLoader dataset)
    {
        int numSamples = (int)dataset.getHighestHound() + (int)Mathf.Abs(dataset.getLowestHound()) + 1;

        int[]     values  = new int[numSamples];
        Color[]   cols    = new Color[numSamples];
        Texture2D texture = new Texture2D(numSamples, 1, TextureFormat.RGBAFloat, false);

        int[] data    = dataset.getArr();
        int   maxFreq = 0;

        for (int iData = 0; iData < data.Length; iData++)
        {
            int value = data[iData] + (int)Mathf.Abs(dataset.getLowestHound());
            values[value] += 1;
            maxFreq        = System.Math.Max(values[value], maxFreq);
        }

        for (int iSample = 0; iSample < numSamples; iSample++)
        {
            cols[iSample] = new Color(Mathf.Log10((float)values[iSample]) / Mathf.Log10((float)maxFreq), 0.0f, 0.0f, 1.0f);
        }

        texture.SetPixels(cols);
        texture.Apply();

        return(texture);
    }