/// <summary>
        /// 端に追加する
        /// </summary>
        /// <param name="point1"></param>
        /// <param name="point2"></param>
        /// <param name="defaultNormal"></param>
        /// <param name="defaultCalcNormal"></param>
        /// <param name="width"></param>
        /// <param name="isEnd"></param>
        /// <param name="cap"></param>
        /// <param name="vertex"></param>
        /// <param name="queVertexs"></param>
        private static void AddCap(Vector2 point1, Vector2 point2, Vector2 defaultNormal, Vector2 defaultCalcNormal,
                                   float width, bool isEnd, CapType cap, UIVertex vertex,
                                   ICollection <UIVertex[]> queVertexs)
        {
            var vertexs = new List <UIVertex>();

            if (!isEnd)
            {
                switch (cap)
                {
                case CapType.Butt:
                    break;

                case CapType.Round:
                {
                    var upCorner   = RotationVector2(defaultNormal, -Mathf.PI / 4);
                    var downCorner = RotationVector2(defaultNormal, Mathf.PI / 4);
                    {
                        vertex.position = point1 + downCorner * width;
                        vertex.uv0      = new Vector2(0, 0);
                        vertexs.Add(vertex);

                        vertex.position = point1 + defaultCalcNormal * width;
                        vertex.uv0      = new Vector2(1, 0);
                        vertexs.Add(vertex);

                        vertex.position = point1;
                        vertex.uv0      = new Vector2(1, 1);
                        vertexs.Add(vertex);

                        vertex.position = point1 + defaultNormal * width;
                        vertex.uv0      = new Vector2(0, 1);
                        vertexs.Add(vertex);

                        queVertexs.Add(vertexs.ToArray());
                        vertexs.Clear();
                    }
                    {
                        vertex.position = point1 + defaultNormal * width;
                        vertex.uv0      = new Vector2(0, 0);
                        vertexs.Add(vertex);

                        vertex.position = point1;
                        vertex.uv0      = new Vector2(1, 0);
                        vertexs.Add(vertex);

                        vertex.position = point1 - defaultCalcNormal * width;
                        vertex.uv0      = new Vector2(1, 1);
                        vertexs.Add(vertex);

                        vertex.position = point1 + upCorner * width;
                        vertex.uv0      = new Vector2(0, 1);
                        vertexs.Add(vertex);
                        queVertexs.Add(vertexs.ToArray());
                        vertexs.Clear();
                    }
                    break;
                }

                case CapType.Square:
                {
                    vertex.position = point1 + defaultNormal * width + defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(0, 0);
                    vertexs.Add(vertex);

                    vertex.position = point1 + defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(1, 0);
                    vertexs.Add(vertex);

                    vertex.position = point1 - defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(1, 1);
                    vertexs.Add(vertex);

                    vertex.position = point1 + defaultNormal * width - defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(0, 1);
                    vertexs.Add(vertex);

                    queVertexs.Add(vertexs.ToArray());
                    vertexs.Clear();
                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException(cap.GetType().Name, cap, null);
                }
            }
            else
            {
                switch (cap)
                {
                case CapType.Butt:
                    break;

                case CapType.Round:
                {
                    var upCorner   = RotationVector2(-defaultNormal, Mathf.PI / 4);
                    var downCorner = RotationVector2(-defaultNormal, -Mathf.PI / 4);
                    {
                        vertex.position = point2 + defaultCalcNormal * width;
                        vertex.uv0      = new Vector2(0, 0);
                        vertexs.Add(vertex);

                        vertex.position = point2 + downCorner * width;
                        vertex.uv0      = new Vector2(1, 0);
                        vertexs.Add(vertex);

                        vertex.position = point2 - defaultNormal * width;
                        vertex.uv0      = new Vector2(1, 1);
                        vertexs.Add(vertex);

                        vertex.position = point2;
                        vertex.uv0      = new Vector2(0, 1);
                        vertexs.Add(vertex);
                        queVertexs.Add(vertexs.ToArray());
                        vertexs.Clear();
                    }
                    {
                        vertex.position = point2;
                        vertex.uv0      = new Vector2(0, 0);
                        vertexs.Add(vertex);

                        vertex.position = point2 - defaultNormal * width;
                        vertex.uv0      = new Vector2(1, 0);
                        vertexs.Add(vertex);

                        vertex.position = point2 + upCorner * width;
                        vertex.uv0      = new Vector2(1, 1);
                        vertexs.Add(vertex);

                        vertex.position = point2 - defaultCalcNormal * width;
                        vertex.uv0      = new Vector2(0, 1);
                        vertexs.Add(vertex);
                        queVertexs.Add(vertexs.ToArray());
                        vertexs.Clear();
                    }
                    break;
                }

                case CapType.Square:
                {
                    vertex.position = point2 + defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(0, 0);
                    vertexs.Add(vertex);

                    vertex.position = point2 - defaultNormal * width + defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(1, 0);
                    vertexs.Add(vertex);

                    vertex.position = point2 - defaultNormal * width - defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(1, 1);
                    vertexs.Add(vertex);

                    vertex.position = point2 - defaultCalcNormal * width;
                    vertex.uv0      = new Vector2(0, 1);
                    vertexs.Add(vertex);

                    queVertexs.Add(vertexs.ToArray());
                    vertexs.Clear();
                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException(cap.GetType().Name, cap, null);
                }
            }
        }