Accord.Math.Geometry.SimpleShapeChecker.IsConvexPolygon C# (CSharp) Method

IsConvexPolygon() public method

Check if the specified set of points form a convex polygon shape.

The method is able to detect only triangles and quadrilaterals for now. Check number of detected corners to resolve type of the detected polygon.

public IsConvexPolygon ( List edgePoints, List &corners ) : bool
edgePoints List Shape's points to check.
corners List List of polygon corners on successful return.
return bool
        public bool IsConvexPolygon( List<IntPoint> edgePoints, out List<IntPoint> corners )
        {
            corners = GetShapeCorners( edgePoints );
            return CheckIfPointsFitShape( edgePoints, corners );
        }

Usage Example

Example #1
0
        public void CalculateShapes()
        {
            circles.Clear();
            triangles.Clear();
            quadrilaterals.Clear();
            polylines.Clear();

            CalculateBlobs();

            Ag.SimpleShapeChecker shapeChecker = new Ag.SimpleShapeChecker();

            if (Angle >= 0)
            {
                shapeChecker.AngleError = (float)Angle;
            }
            if (Length >= 0)
            {
                shapeChecker.LengthError = (float)Length;
            }
            if (Distortion >= 0)
            {
                shapeChecker.MinAcceptableDistortion = (float)Distortion;
            }

            foreach (Blob blob in blobObjects)
            {
                List <Accord.IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blob);

                Accord.Point center;
                float        radius;

                if (shapeChecker.IsCircle(edgePoints, out center, out radius))
                {
                    circles.Add(new Rg.Circle(Rg.Plane.WorldXY, center.ToRhPoint(bitmap.Height), radius).ToNurbsCurve());
                }
                else
                {
                    List <Accord.IntPoint> corners;
                    if (edgePoints.Count > 2)
                    {
                        if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                        {
                            if (shapeChecker.IsTriangle(edgePoints))
                            {
                                triangles.Add(corners.ToRhinoPoints(bitmap.Height).ToPolyline(true).ToNurbsCurve());
                            }
                            else if (shapeChecker.IsQuadrilateral(edgePoints))
                            {
                                quadrilaterals.Add(corners.ToRhinoPoints(bitmap.Height).ToPolyline(true).ToNurbsCurve());
                            }
                            else
                            {
                                polylines.Add(corners.ToRhinoPoints(bitmap.Height).ToPolyline(true).ToNurbsCurve());
                            }
                        }
                    }
                }
            }
        }
All Usage Examples Of Accord.Math.Geometry.SimpleShapeChecker::IsConvexPolygon