4

C# を使用して 3D 散布図に関する調査を行っています。これまでのところ、ある程度機能しているライブラリを見つけました。ただし、必ずしも必要なほど柔軟であるとは限りません。私が必要とするのは固定された 3D 散布図を作成することだけなので、C# の構造を使用した 3D プロットのPoint3D他の代替手段、またはサードパーティのライブラリを持ち込む必要がなく、より優れた柔軟性を可能にする他の代替手段はありますか?

4

2 に答える 2

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

学習と使用は非常に簡単ですが、グラフィック カードに深刻な問題がいくつかあります (これはIntel® Processor Graphics 2000なので、それを責めるつもりはありません...)。

于 2013-09-23T12:26:03.350 に答える