簡體   English   中英

用ILnumerics和c#繪制3d表面

[英]Plot 3d surface with ILnumerics and c#

我使用了以下代碼:

    private void ilPanel1_Load(object sender, EventArgs e)
    {    using (ILScope.Enter())
        {
            ILArray<float> X = new float[] { 0, 0, 1, 1, 2.5F, -2.6F, 5, 9, 1, 38 };
            ILArray<float> Y = new float[] { 1, 0, 1, 0, 1.5F,  0.5F, 5, 9, 1, 39 };
            ILArray<float> Z = new float[] { 0, 0, 1, 1, 0.4F, -0.2F, 5, 9, 1, 39 };
            X = X.Reshape(2,5);
            Y = Y.Reshape(2,5);
            Z = Z.Reshape(2,5);
            ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
                new ILSurface(Z, colormap: Colormaps.Cool) {
                    Colors = 1.4f  ,Children = { new ILColorbar() }
                }
            });
        }
    }

這將產生:

在此處輸入圖片說明

但是我檢查了這個問題,並嘗試采用不推薦使用的ILnumerics解決方案 (因為我沒有找到其他c#代碼),但仍然沒有得到它,每個坐標(Z,X和Y)都對應於數組中的一個切片(mxn)。 因此,有必要重塑數據。

這部分是問題:

            X = X.Reshape(2,5);
            Y = Y.Reshape(2,5);
            Z = Z.Reshape(2,5);

如果我沒有給出正確的大小,則程序將失敗,因此在示例中,每個向量上有10個元素,因此在重新分配時,我會將2,5乘以10?

如果我有11個元素,好像我在重塑上放了2,5時出現錯誤怎么辦?

該怎么辦?

我試過使用X = X.Reshape(11); 但是失敗了...如果我使用X = X.Reshape(10); 它只是不畫任何東西

曲面繪制網格。 必須提供一個網格,以便使曲面有機會了解如何連接這些點,這些點是相鄰的。

整形應該沒有問題,因為無論如何原始數據都必須代表網格/矩陣的點。 因此重塑該矩陣肯定會起作用。

reshape(10)創建一個長度為10的向量,因為向量的確最多代表一條線,但不代表一條區域,因此未繪制任何內容。 切記:曲面繪制網格或矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM