[英]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.