public void InitSides()
            {
                this.Sides = new List <AreaSide>();

                AreaSide rDownSide = new AreaSide()
                {
                    Index = 0, Points = new List <Vector3>()
                };

                rDownSide.EdgeLine = new Line()
                {
                    Start = this.Rect.Min, End = new Vector3(this.Rect.Max.x, 0, this.Rect.Min.z)
                };                                                                                                                  // min.z 一样
                rDownSide.SortPoints();
                this.Sides.Add(rDownSide);

                AreaSide rRightSide = new AreaSide()
                {
                    Index = 1, Points = new List <Vector3>()
                };

                rRightSide.EdgeLine = new Line()
                {
                    Start = new Vector3(this.Rect.Max.x, 0, this.Rect.Min.z), End = this.Rect.Max
                };                                                                                                                  // Max.x 一样
                rRightSide.SortPoints();
                this.Sides.Add(rRightSide);

                AreaSide rUpSide = new AreaSide()
                {
                    Index = 2, Points = new List <Vector3>()
                };

                rUpSide.EdgeLine = new Line()
                {
                    Start = this.Rect.Max, End = new Vector3(this.Rect.Min.x, 0, this.Rect.Max.z)
                };                                                                                                                  // Max.z 一样
                rUpSide.SortPoints();
                this.Sides.Add(rUpSide);

                AreaSide rLeftSide = new AreaSide()
                {
                    Index = 3, Points = new List <Vector3>()
                };

                rLeftSide.EdgeLine = new Line()
                {
                    Start = new Vector3(this.Rect.Min.x, 0, this.Rect.Max.z), End = this.Rect.Min
                };                                                                                                                 // Min.x 一样
                rLeftSide.SortPoints();
                this.Sides.Add(rLeftSide);
            }
        /// <summary>
        /// 判断一个Side是否和一个Area相交,如果相交了,分别把Side和AABB的边裁减成多个线段
        /// </summary>
        public void Intersect_Side_AreaAABB(AreaSide rSide, AreaAABB rArea)
        {
            List <Vector3> rTempPoints = new List <Vector3>(rSide.Points);
            Line           rLine       = rSide.EdgeLine;

            for (int j = 0; j < rArea.Sides.Count; j++)
            {
                List <Vector3> rTempAreaPoints = new List <Vector3>(rArea.Sides[j].Points);
                Line           rAreaLine       = rArea.Sides[j].EdgeLine;
                this.GetIntersectPoint_AABB(rLine, rAreaLine, rTempPoints, rTempAreaPoints);
                rArea.Sides[j].Points = rTempAreaPoints;
                rArea.Sides[j].SortPoints();
            }
            rSide.Points = rTempPoints;
            rSide.SortPoints();
        }