2013-08-30 1 views
7

Я хочу построить некоторые 3d поверхности с помощью ILNumerics. Я заметил, что ILCube не сохраняет форму поверхности, если я вращаю ее, и это потому, что она пытается поместить куб в ILPanel. Однако, если я использую ILCamera, он сохранит форму, но вокруг нее нет куба. Ниже приведен пример,Как сохранить форму в ILCube

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? Благодарю.

ответ

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

Недостаток: вам придется настраивать параметр «Лимиты» каждый раз, когда изменяется содержимое куба сюжета (т. Е. Данные добавляются/удаляются/изменяются).

+2

Я только что попробовал выход EXE на сайте, с которым вы связались ... классный материал! :) – user492238

+0

Спасибо за ответ. :) – Ehsan