// function for testing 3d scatter plot public void TestScatterPlot(int nDotNo) { // 1. set scatter chart data no. m_3dChart = new ScatterChart3D(); m_3dChart.SetDataNo(nDotNo); // 2. set property of each dot (size, position, shape, color) Random randomObject = new Random(); int nDataRange = 200; for (int i = 0; i < nDotNo; i++) { ScatterPlotItem plotItem = new ScatterPlotItem(); plotItem.w = 4; plotItem.h = 6; plotItem.x = (float)randomObject.Next(nDataRange); plotItem.y = (float)randomObject.Next(nDataRange); plotItem.z = (float)randomObject.Next(nDataRange); plotItem.shape = randomObject.Next(4); Byte nR = (Byte)randomObject.Next(256); Byte nG = (Byte)randomObject.Next(256); Byte nB = (Byte)randomObject.Next(256); plotItem.color = Color.FromRgb(nR, nG, nB); ((ScatterChart3D)m_3dChart).SetVertex(i, plotItem); } // 3. set the axes m_3dChart.GetDataRange(); m_3dChart.SetAxes(); // 4. get Mesh3D array from the scatter plot ArrayList meshs = ((ScatterChart3D)m_3dChart).GetMeshes(); // 5. display model vertex no and triangle no UpdateModelSizeInfo(meshs); // 6. display scatter plot in Viewport3D WPFChart3D.Model3D model3d = new WPFChart3D.Model3D(); m_nChartModelIndex = model3d.UpdateModel(meshs, null, m_nChartModelIndex, this.mainViewport); // 7. set projection matrix float viewRange = (float)nDataRange; m_transformMatrix.CalculateProjectionMatrix(0, viewRange, 0, viewRange, 0, viewRange, 0.5); TransformChart(); }
public void TestSimpleScatterPlot(double[,] coordinates, int numberOfPointsInCuttingRegion) { distance++; mygrid.UpdateLayout(); int nDotNo = coordinates.GetLength(0); // 1. set the scatter plot size m_3dChart = new ScatterChart3D(); m_3dChart.SetDataNo(nDotNo); // 2. set the properties of each dot Random randomObject = new Random(); int nDataRange = 40; for (int i = 0; i < nDotNo; i++) { ScatterPlotItem plotItem = new ScatterPlotItem(); plotItem.x = (float)coordinates[i, 0]; plotItem.y = (float)coordinates[i, 1]; plotItem.z = (float)coordinates[i, 2]; if (numberOfFlutes == 0) { label.Content = "Distance travelled by tool = " + distance + " mm."; if (i < numberOfPointsInCuttingRegion) { plotItem.w = 0.25f; plotItem.h = 0.10f; plotItem.shape = (int)Chart3D.SHAPE.BAR; plotItem.color = Color.FromArgb(200, (byte)(160), (byte)(5), (byte)(5)); } else { plotItem.w = 0.05f; plotItem.h = 0.1f; plotItem.shape = (int)Chart3D.SHAPE.BAR; plotItem.color = Color.FromArgb(200, (byte)(160), (byte)(160), (byte)(160)); } } else { label.Content = (""); if (((int)(i / Lp)) % (Kp / numberOfFlutes) == 0) { int n = (int)(((int)(i / Lp)) / (Kp / numberOfFlutes)); plotItem.w = 0.8f; plotItem.h = 0.20f; plotItem.shape = (int)Chart3D.SHAPE.PYRAMID; //plotItem.color = Color.FromArgb(200, (byte)(80), (byte)(80), (byte)(60)); plotItem.color = Color.FromArgb(1, (byte)(60 + 20 * n), (byte)(60 + 20 * n), (byte)(30 + 40 * n)); } else { plotItem.w = 0.2f; plotItem.h = 0.10f; plotItem.shape = (int)Chart3D.SHAPE.BAR; plotItem.color = Color.FromArgb(1, (byte)(160), (byte)(160), (byte)(160)); } } ((ScatterChart3D)m_3dChart).SetVertex(i, plotItem); } // 3. set axes m_3dChart.GetDataRange(); m_3dChart.SetAxes(); // 4. Get Mesh3D array from scatter plot ArrayList meshs = ((ScatterChart3D)m_3dChart).GetMeshes(); // 5. display vertex no and triangle no. UpdateModelSizeInfo(meshs); // 6. show 3D scatter plot in Viewport3d WPFChart3D.Model3D model3d = new WPFChart3D.Model3D(); m_nChartModelIndex = model3d.UpdateModel(meshs, null, m_nChartModelIndex, this.mainViewport); // 7. set projection matrix float viewRange = (float)nDataRange; m_transformMatrix.CalculateProjectionMatrix(0, viewRange, 0, viewRange, 0, viewRange, 0.5); TransformChart(); mainViewport.UpdateLayout(); }