2013-08-30 17 views
7

Voglio tracciare alcune superfici 3D con ILNumerics. Ho notato che ILCube non mantiene la forma della superficie se lo ruoto ed è perché tenta di adattare il cubo in ILPanel. Se utilizzo ILCamera, manterrà la forma ma non vi è alcun cubo intorno. Ecco un esempio,Come mantenere la forma in 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; 
} 

e il risultato è

enter image description here

e per 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; 
} 

e il risultato è

enter image description here

Esiste un modo per rendere l'ILCube in grado di mantenere la forma della superficie? Oppure aggiungi un cubo attorno alla superficie della ILCamera? Grazie.

risposta

3

I cubi di trama attualmente non supportano i rapporti di forma dell'asse uguale. Ma è abbastanza semplice aggiungerlo tu stesso.

Per il tuo esempio, il contenuto del cubo di trama (toro) è allungato lungo l'asse Z, poiché l'estensione del toro lungo Z è inferiore rispetto alla direzione X o Y. Quindi, il cubo della trama sceglie di allungare il contenuto per fornire dettagli migliori.

Al fine di mostrare il toro senza distorsione, assicurarsi che il campo dell'asse del cubo plot è uguale in tutte le direzioni:

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

vedere un esempio interattivo qui: http://ilnumerics.net/ilcc.php?ilc=i63fb4c

ILNumerics plot cube without distortion

Svantaggio: dovrai regolare l'impostazione dei Limiti ogni volta che il contenuto del cubo di trama viene modificato (cioè i dati vengono aggiunti/rimossi/alterati).

+2

Ho appena provato l'output EXE sul sito che hai collegato a ... cose interessanti! :) – user492238

+0

Grazie per la risposta. :) – Ehsan

Problemi correlati