如何将ILContourPlot添加到ILPlotCube中的自定义Z轴位置

时间:2014-06-09 14:06:46

标签: ilnumerics

我有三个二维数组,它们都有相同的X和Y坐标,但值不同。 这些阵列中的每一个都代表一定高度的房间温度(例如,阵列1 = 10米,阵列2 = 5米,阵列3 = 3米)。

我创建了一个ILPlotCube,它为这些数组提供了三个不同的ILContourPlots,但它们都位于多维数据集(0)的同一Z轴点:

this.scene = new ILScene();
ILPlotCube pc = new ILPlotCube(twoDMode: false);

ILArray<float> TA = tempRoom.GetILArray("TA");
ILContourPlot cpa = new ILContourPlot(TA, create3D: false);
ILArray<float> TB = tempRoom.GetILArray("TB");
ILContourPlot cpb = new ILContourPlot(TB, create3D: false);
ILArray<float> TC = tempRoom.GetILArray("TC");
ILContourPlot cpc = new ILContourPlot(TC, create3D: false);

pc.Add(cpa);
pc.Add(cpb);
pc.Add(cpc);

scene.Add(pc);

ilPanel1.Scene = this.scene;
ilPanel1.Refresh(); 

结果图片:http://i.stack.imgur.com/VNLgB.jpg

如何手动设置图片中显示的立方体Z轴的范围,并手动设置每个ILContourPlot的Z轴位置,而不会弄乱ILContourPlots中的轮廓?

1 个答案:

答案 0 :(得分:1)

ILNumerics中的等高线图是常规场景图形对象 - 就像evey其他图形一样。您可以使用常规组对象以仲裁方式转换它们:

ILArray<float> A = ILMath.tosingle(ILSpecialData.terrain); 
ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
    new ILGroup(translate: new Vector3(0,0,10)) {
        new ILContourPlot(A["0:50;0:50"]) 
    },
    new ILGroup(translate: new Vector3(0,0,5)) {
        new ILContourPlot(A["50:100;50:100"],lineWidth: 3)
    },
    new ILGroup(translate: new Vector3(0,0,3)) {
        new ILContourPlot(A["150:200;150:200"])
    }
}); 

给予:

Contour Plots ILNumerics stacked

但是如果你在2D设置中使用它会很快混淆。显然,您必须使用线和轮廓级别的配置选项来区分各个等高线图。或使用3D视图。