Colors 如何在ILNumerics中进行手动着色?

Colors 如何在ILNumerics中进行手动着色?,colors,visualization,ilnumerics,colorbar,color-mapping,Colors,Visualization,Ilnumerics,Colorbar,Color Mapping,我用ILNumerics(图片右侧)制作了一些盒子。正如您在左侧看到的那样,每个框都有不同的属性 实际上,我想给我定义的盒子上色。颜色本身取决于“Delta Rho”,它的最大值为1,最小值为-1。我还想显示颜色栏。如何做到这一点?有人有线索吗 顺便说一句,这是我的代码: private void createBlockBody(BlockBody BlockBody, ILScene scene, ILPlotCube plotCube) { ILArray<d

我用ILNumerics(图片右侧)制作了一些盒子。正如您在左侧看到的那样,每个框都有不同的属性

实际上,我想给我定义的盒子上色。颜色本身取决于“Delta Rho”,它的最大值为1,最小值为-1。我还想显示颜色栏。如何做到这一点?有人有线索吗

顺便说一句,这是我的代码:

private void createBlockBody(BlockBody BlockBody, ILScene scene, ILPlotCube plotCube)
    {
        ILArray<double> A = ILMath.rand(1, 20) * 4 + ILMath.vec(1, 20);
        plotCube.Add(new ILTriangles("tri")
        {
            Positions = new float[,] { 
            // front side
            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z},

            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},

            //back side
            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},

            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},

            //up
            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z  + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},

            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z  + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},

            //up
            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z  + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z},

            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z  + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},

            //right
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z},

            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X + (float) BlockBody.dx, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},


            //left
            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z}, 

            {(float) BlockBody.UpperLeftPoint.X,(float) BlockBody.UpperLeftPoint.Y, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz}, 
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z},
            {(float) BlockBody.UpperLeftPoint.X, (float) BlockBody.UpperLeftPoint.Y + (float) BlockBody.dy, (float) BlockBody.UpperLeftPoint.Z + (float) BlockBody.dz},
            },

            Colors = new float[,] { 
            // front side
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},

            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},

            //
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},

            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},

            //
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},

            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
            {(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},{(float) BlockBody.Rho,(float) BlockBody.Rho,(float) BlockBody.Rho},
        },
        });

        // configure the limits of the plot cube content (similar to zooming)
        plotCube.Limits.Set(
          new Vector3(0, 0, 1000),   // set the minimum X,Y,Z coordinate
          new Vector3(1000, 1000, 0));// set the maximum X,Y,Z coordinate

        // disable clipping at the plot cube edges
        plotCube.Plots.Clipping = null;
        SliceilPanel.Scene = scene;
        SliceilPanel.Refresh();
    }
私有void createBlockBody(块体块体、ILScene场景、ILPlotCube plotCube)
{
ILArray A=ILMath.rand(1,20)*4+ILMath.vec(1,20);
plotCube.Add(新的ILTriangles(“tri”)
{
位置=新浮动[,]{
//正面
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
//背面
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
//向上
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
//向上
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
//对
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X+(float)BlockBody.dx,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
//左
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)BlockBody.UpperLeftPoint.Z+(float)BlockBody.dz},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y+(float)BlockBody.dy,(float)BlockBody.UpperLeftPoint.Z},
{(float)BlockBody.UpperLeftPoint.X,(float)BlockBody.UpperLeftPoint.Y,(float)Bloc
plotCube.Add(box);
var colormap = new ILColormap(Colormaps.Jet);
Vector4 key1 = colormap.Map((float)BlockBody.Rho, new Tuple<float, float>(-1, 1));
var test = key1.ToColor();
box.Color = test;