2011-06-24 41 views
3

私はC#で3次元散布図を研究しています。これまでのところ私は幾分働いているlibraryを見つけました。しかし、私が必要とするほどフレキシブルである必要はありません。 C#のPoint3D構造を使用した3Dプロットや、サードパーティのライブラリを導入する必要がなく、柔軟性を高めることができる他の選択肢がありますか?3D散布図の作成方法は?

答えて

3

私はILNumericsと3D散布図を作成するために管理してきました:

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スキャターチャート](http://www.gigasoft.com)を調べてください。 DirectXを使用して、Intel 2000グラフィックスチップセットでチャートが機能することは確信しています。それはほんの18メグの面倒なダウンロードであり、数秒であなたは少しでも面白くて面白いことができます。 – Robert

関連する問題