Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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");
            }
        }