7

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

結果は

ここに画像の説明を入力

および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;
}

結果は

ここに画像の説明を入力

サーフェスの形状を維持するために ILCube を作成する方法はありますか? または、表面の周りに立方体を ILCamera に追加しますか? ありがとう。

4

1 に答える 1

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 プロット キューブ

欠点: プロット キューブのコンテンツが変更される (つまり、データが追加、削除、変更される) たびに、[制限] 設定を調整する必要があります。

于 2013-08-30T09:24:14.480 に答える