1
我用ILNumerics製作了一些盒子(圖片右側)。這些盒子每個都有不同的屬性,如左圖所示。如何在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();
}