Ehs*_*san 7 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;
}
Run Code Online (Sandbox Code Playgroud)
结果是
而对于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;
}
Run Code Online (Sandbox Code Playgroud)
结果是
有没有办法让ILCube保持表面的形状?或者在表面周围添加一个立方体到ILCamera?谢谢.
绘图立方体当前不支持等轴纵横比。但自己添加这个相当简单。
对于您的示例,绘图立方体(环面)的内容沿 Z 轴拉伸,因为环面沿 Z 方向的延伸小于 X 或 Y 方向的延伸。因此,绘图立方体选择拉伸内容以提供更好的细节。
为了显示环面而不失真,请确保绘图立方体的轴范围在所有方向上都相等:
pc.Limits.Set(new Vector3(-1,-1,-1), new Vector3(1,1,1));
Run Code Online (Sandbox Code Playgroud)
请参阅此处的交互式示例:http://ilnumerics.net/ilcc.php ?ilc=i63fb4c
缺点:每次修改绘图立方体的内容(即添加/删除/更改数据)时,您都必须调整限制设置。