如何在ILCube中保持形状

时间:2013-08-30 04:38:20

标签: c# 3d plot numeric ilnumerics

我想用ILNumerics绘制一些3d表面。我注意到,如果我旋转它,ILCube不会保持表面的形状,这是因为它试图使立方体适合ILPanel。但是,如果我使用ILCamera,它将保持形状,但周围没有立方体。这是一个例子,

private void ilPanel1_Load(object sender, EventArgs e)
{
    var scene = new ILScene();
    ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
    var sf = new ILSurface(A);
    var pc = new ILPlotCube();
    pc.TwoDMode = false;
    scene.Add(pc);
    pc.Add(sf);
    sf.Colormap = Colormaps.Jet;
    var cb = new ILColorbar();
    cb.Location = new PointF(1, .1f);
    sf.Children.Add(cb);
    ilPanel1.Scene = scene;
}

,结果是

enter image description here

和ILCamera

private void ilPanel1_Load(object sender, EventArgs e)
{
    var scene = new ILScene();
    ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
    var sf = new ILSurface(A);
    var cam = scene.Camera;
    cam.Add(sf);
    sf.Colormap = Colormaps.Jet;
    var cb = new ILColorbar();
    cb.Location = new PointF(1, .1f);
    sf.Children.Add(cb);
    ilPanel1.Scene = scene;
}

,结果是

enter image description here

有没有办法让ILCube保持表面的形状?或者在表面周围添加一个立方体到ILCamera?感谢。

1 个答案:

答案 0 :(得分:3)

绘图立方体目前不支持等轴纵横比。但是自己添加它是相当简单的。

对于您的示例,绘图立方体(圆环面)的内容沿Z轴拉伸,因为环面沿Z的延伸小于X或Y方向。因此,绘图多维数据集选择拉伸内容以提供更好的细节。

为了显示没有扭曲的圆环,确保绘图立方体的轴范围等于所有方向:

pc.Limits.Set(new Vector3(-1,-1,-1), new Vector3(1,1,1));

请在此处查看交互式示例:http://ilnumerics.net/ilcc.php?ilc=i63fb4c

ILNumerics plot cube without distortion

缺点:每次修改绘图立方体的内容时(即添加/删除/更改数据),您都必须调整“限制”设置。