如何使用颜色作为第四维度

时间:2014-07-11 14:55:27

标签: ilnumerics

原帖: 我得到了很多积分。每个点由四个值组成。前三个值是X,Y和Z.最后一个我需要用作点的颜色。

在Matlab中"散布"功能为我做了。那里很容易,我只需要传递我的数组的第四维作为颜色的参数。但是在matlab中绘制超过100.000点的点云是不高效的。因为我想使用ILNumerics。

如果我是对的,就像matlab那样做不可能,因为ILNumerics需要一个数组[3]或数组[4]作为ILPoints的颜色属性。

有没有一种简单的方法可以将我的第4个值转换为ILPoints.Color所需的颜色属性/数组?

感谢您的帮助!

Wayn0r

新帖子:

数据集:包含四个参数(X,Y,Z并让我们称之为颜色)的巨大点列表。使用普通的StreamReader,我读取所有行并将它们转换为List。之后我将它们传递给float [] Array

        float[] xArray = xFloat.ToArray<float>();
        float[] yArray = yFloat.ToArray<float>();
        float[] zArray = zFloat.ToArray<float>();
        float[] colorArray = colorFloat.ToArray<float>();

之后我创建了一个ILArray,将float []传递给此ILArray

        ILArray<float> points = ILMath.zeros<float>(4, xFloat.Count);
        points["0;:"] = xArray;
        points["1;:"] = yArray;
        points["2;:"] = zArray;
        points["3;:"] = colorArray;

如果我创建一个4维数组的数组,每次运行/调试工具时,ILPanel都是空白的。所以实际上我使用这段代码将X,Y,Z-和Color-Information转换为ILArrays

        ILArray<float> points = ILMath.zeros<float>(3, xFloat.Count);
        points["0;:"] = xArray;
        points["1;:"] = yArray;
        points["2;:"] = zArray;

        ILArray<float> color = ILMath.zeros<float>(1, xFloat.Count);
        color["0;:"] = fzArray;

我的所有值都在位置颜色[&#34; 1; 0&#34;]而不是我将其编码为位置颜色[&#34; 0;:&#34;],因为在位置0处有价值&#34;(:,:) 1e + 003 *&#34;并且所有数据都在位置1并且被分开1000。

Nex我得到颜色的限制-ILArray将它们传递给ILStaticColormapProvider

            color.GetLimits(out min, out max);

        var cmProv = new ILNumerics.Drawing.Plotting.ILStaticColormapProvider(Colormaps.ILNumerics, min, max, AxisScale.Linear);

其他所有内容都与您的链接代码相同。对于&#34; Colors&#34; ILPoints的参数我使用Colors = cmProv.Colormap.Map(color["0;:"]).T

所有东西都用不同颜色绘制和着色,但颜色条范围应该是从-2081到222,但是从30到60.所以使用颜色的粒度不足以看到之间的差异绘制点。

0 个答案:

没有答案