Exemplo n.º 1
0
        public Polygon RectangleInside()
        {
            var p1        = Vector2.zero;
            var p2        = Vector2.zero;
            var maxLength = float.MinValue;

            ForEachEdge((a, b, i) =>
            {
                var len = (a - b).magnitude;
                if (len > maxLength)
                {
                    p1        = a;
                    p2        = b;
                    maxLength = len;
                }
            });

            var rotated          = Rotate(GeometryHelpers.Angle(p1 - p2));
            var minY             = rotated.Vertices.Min(v => v.y);
            var greatestDistance = rotated.Vertices.Max(v => v.y - minY);

            var normal   = GeometryHelpers.Rotate90(p2 - p1).normalized;
            var newHouse = new Polygon(p1, p2, p2 - GeometryHelpers.Scale(normal, greatestDistance),
                                       p1 - GeometryHelpers.Scale(normal, greatestDistance)).ZoomShrink(0.2f);

            newHouse = newHouse.Translate(newHouse.Center - Center);

            return(newHouse);
        }
Exemplo n.º 2
0
        public Polygon SortPointsClockwise()
        {
            var sortedVertices = Vertices.OrderBy(v => GeometryHelpers.Angle(v - Center)).ToList();

            return(new Polygon(sortedVertices));
        }