2011-06-24 118 views
3

我一直在用C#對三維散點圖進行一些研究。到目前爲止,我發現了一個library,這對我來說有點幫助。但是,不一定像我需要的那樣靈活。既然我需要的是創建一個固定的三維散點圖,那麼在C#中使用Point3D結構還是其他替代方法可以替代3D繪圖嗎?或者任何其他替代方法都不需要我引入第三方庫並且可以提供更好的靈活性?如何創建3D散點圖?

回答

3

我已經成功地創建一個ILNumerics三維散點圖:

var colors 
    = new[] { Color.Red, Color.Black, Color.Blue, Color.Green /*...*/ }; 

ILArray<float> data = ILMath.zeros<float>(
    3, 
    colors.Length); 

ILArray<float> colorData = ILMath.zeros<float>(
    3, 
    colors.Length); 

int index = 0; 
foreach (var p in colors) 
{ 
    data[0, index] = p.GetHue(); 
    data[1, index] = p.GetSaturation(); 
    data[2, index] = p.GetBrightness(); 
    colorData [0, index] = p.R/255.0f; 
    colorData [1, index] = p.G/255.0f; 
    colorData [2, index] = p.B/255.0f; 
    index++; 
} 

var points = new ILPoints() 
{ 
    Positions = data, 
    Colors = colorData 
}; 

points.Color = null; 

var plot = new ILPlotCube(twoDMode: false) 
{ 
    Rotation = Matrix4.Rotation(new Vector3(1, 1, 0.1f), 0.4f), 
    Projection = Projection.Orthographic, 
    Children = { points } 
}; 

plot.Axes[0].Label.Text = "Hue"; 
plot.Axes[1].Label.Text = "Saturation"; 
plot.Axes[2].Label.Text = "Brightness"; 

this.ilPanel1.Scene = new ILScene { plot }; 

很容易學習和使用,但有一些嚴重的問題,我的顯卡(這是英特爾®處理器顯卡2000所以我不怪他們......) - 只有GDI渲染器在工作,並不是非常驚人的性能。

+1

希望現在GDI渲染已經修復,否則,可能會研究我的[3d scatter charting](http://www.gigasoft.com)。我非常有信心我的圖表可以通過DirectX與英特爾2000圖形芯片組協同工作。這只是一個18兆沒有麻煩的下載,並在幾秒鐘內,你可以修補位,有趣的是沒有。 – Robert