/// <summary> /// Generates a 3D PointCloud for a cuboid /// </summary> /// <param name="Name">PointCloud name</param> /// <param name="u">Length of the lower part</param> /// <param name="v">Length of the high part</param> /// <param name="numberOfPoints">Number of points to use in circumference</param> /// <param name="Color">Color vector</param> /// <returns></returns> public static PointCloud Cuboid(float u, float v, int numberOfPoints, System.Drawing.Color color) { PointCloud pcl = new PointCloud(); pcl.Vectors = ExamplePointClouds.Cuboid(numberOfPoints, u, v); pcl.SetColor(new Vector3(color.R, color.G, color.B)); return(pcl); }
/// <summary> /// mergedPoints /// </summary> /// <param name="pointsTransformed"></param> /// <param name="pointsTarget"></param> /// <param name="kdTree"></param> /// <param name="meanDistance"></param> /// <returns></returns> public static PointCloud CalculateMergedPoints(PointCloud pointsTransformed, PointCloud pointsTarget, IKDTree kdTree, float threshold, out int pointsAdded, bool changeColorsOfMergedPoints) { if (pointsTransformed.Colors == null || pointsTransformed.Colors.Length != pointsTransformed.Vectors.Length) { pointsTransformed.Colors = new Vector3[pointsTransformed.Vectors.Length]; } if (pointsTarget.Colors == null || pointsTarget.Colors.Length != pointsTarget.Vectors.Length) { pointsTarget.Colors = new Vector3[pointsTarget.Vectors.Length]; } //search in tree // PointCloud resultKDTree = kdTree.FindClosestPointCloud_Parallel(result); KDTreeKennell kdTreeKennell = kdTree as KDTreeKennell; PointCloud pcToAdd = kdTreeKennell.RemoveDuplicates(pointsTransformed, threshold); pointsAdded = pcToAdd.Vectors.Length; //System.Diagnostics.Debug.WriteLine("target points added : " + pcToAdd.Vectors.Length.ToString() + " - outof " + result.Vectors.Length.ToString()); if (changeColorsOfMergedPoints) { pcToAdd.SetColor(new Vector3(0, 1, 1)); } List <Vector3> listV = pointsTarget.ListVectors; List <Vector3> listC = pointsTarget.ListColors; listV.AddRange(pcToAdd.ListVectors); listC.AddRange(pcToAdd.ListColors); PointCloud pMerged = new PointCloud(listV, listC, null, null, null, null); return(pMerged); }
private void toolStripChangeColor_Click(object sender, EventArgs e) { if (comboModels.SelectedIndex >= 0) { ColorDialog colDiag = new ColorDialog(); // Sets the initial color select to the current text color. // Update the text box color if the user clicks OK if (colDiag.ShowDialog() == DialogResult.OK) { RenderableObject pcr = this.OGLControl.GLrender.RenderableObjects[this.OGLControl.GLrender.SelectedModelIndex]; PointCloud pc = pcr.PointCloud; pc.SetColor(new Vector3(colDiag.Color.R / 255f, colDiag.Color.G / 255f, colDiag.Color.B / 255f)); this.OGLControl.Refresh(); } } else { System.Windows.Forms.MessageBox.Show("Please load a 3D object first"); } }