Beispiel #1
0
        /// <summary>
        /// Create a new capsule geometry.
        /// </summary>
        /// <param name="resourceCreator"> The resource - creator. </param>
        /// <param name="transformer"> The ITransformer - LTRB. </param>
        /// <returns> The product geometry. </returns>
        public static CanvasGeometry CreateCapsule(ICanvasResourceCreator resourceCreator, ITransformerLTRB transformer)
        {
            Vector2 centerLeft   = transformer.CenterLeft;
            Vector2 centerTop    = transformer.CenterTop;
            Vector2 centerRight  = transformer.CenterRight;
            Vector2 centerBottom = transformer.CenterBottom;

            // Horizontal
            Vector2 horizontal       = transformer.Horizontal;
            float   horizontalLength = horizontal.Length();
            Vector2 horizontalUnit   = horizontal / horizontalLength;
            // Vertical
            Vector2 vertical       = transformer.Vertical;
            float   verticalLength = vertical.Length();

            if (horizontalLength < verticalLength)
            {
                return(TransformerGeometry.CreateEllipse(resourceCreator, transformer));
            }

            return(TransformerGeometry.CreateCapsuleCore(resourceCreator,
                                                         verticalLength,
                                                         horizontalUnit,

                                                         centerTop,
                                                         centerLeft,
                                                         centerRight,
                                                         centerBottom,

                                                         transformer.LeftTop,
                                                         transformer.RightTop,
                                                         transformer.RightBottom,
                                                         transformer.LeftBottom
                                                         ));
        }
Beispiel #2
0
        /// <summary>
        /// Create a new capsule geometry.
        /// </summary>
        /// <param name="resourceCreator"> The resource - creator. </param>
        /// <param name="transformerLTRB"> The ITransformer - LTRB. </param>
        /// <param name="matrix"> The matrix. </param>
        /// <returns> The product geometry. </returns>
        public static CanvasGeometry CreateCapsule(ICanvasResourceCreator resourceCreator, ITransformerLTRB transformer, Matrix3x2 matrix)
        {
            Vector2 leftTop     = Vector2.Transform(transformer.LeftTop, matrix);
            Vector2 rightTop    = Vector2.Transform(transformer.RightTop, matrix);
            Vector2 rightBottom = Vector2.Transform(transformer.RightBottom, matrix);
            Vector2 leftBottom  = Vector2.Transform(transformer.LeftBottom, matrix);

            Vector2 centerLeft   = Vector2.Transform(transformer.CenterLeft, matrix);
            Vector2 centerTop    = Vector2.Transform(transformer.CenterTop, matrix);
            Vector2 centerRight  = Vector2.Transform(transformer.CenterRight, matrix);
            Vector2 centerBottom = Vector2.Transform(transformer.CenterBottom, matrix);

            // Horizontal
            Vector2 horizontal       = (centerRight - centerLeft);
            float   horizontalLength = horizontal.Length();
            Vector2 horizontalUnit   = horizontal / horizontalLength;
            // Vertical
            Vector2 vertical       = (centerBottom - centerTop);
            float   verticalLength = vertical.Length();

            if (horizontalLength < verticalLength)
            {
                return(TransformerGeometry.CreateEllipse(resourceCreator, transformer, matrix));
            }

            return(TransformerGeometry.CreateCapsuleCore(resourceCreator,
                                                         verticalLength,
                                                         horizontalUnit,

                                                         centerTop,
                                                         centerLeft,
                                                         centerRight,
                                                         centerBottom,

                                                         leftTop,
                                                         rightTop,
                                                         rightBottom,
                                                         leftBottom));
        }