2014-07-02 12 views
1

我用ILNumerics製作了一些盒子(圖片右側)。這些盒子每個都有不同的屬性,如左圖所示。如何在ILNumerics中進行手動着色?

enter image description here

其實,我想着色的箱子,因爲我定義。顏色本身取決於「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(); 
    } 

回答

1

得到了答案!

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; 
相關問題