private float MinDistanceBetweenAdjacentVerts()
        {
            float min = float.MaxValue;

            for (int i = 0; i < _verts.Length - 1; i++)
            {
                for (int j = i + 1; j < _verts.Length; j++)
                {
                    float a = XVector3.Distance(_verts[i], _verts[j]);
                    if (min > a)
                    {
                        min = a;
                    }
                }
            }
            return(min);
        }
        private void GetDimensions()
        {
            int step = ExponentialSearch(Start, Corner);

            if (step > 0)
            {
                Corner = BisectionSearch(Start, Corner, Exp(step - 1), Exp(step));
            }
            Length = XVector3.Distance(Start, Corner);
            //unity.Message(Start +" " + Corner);
            End = Start - Corner;
            End = new XVector3(-End.z, End.y, End.x);
            End = Corner + End.normalized;// * MinDistanceBetweenAdjacentVerts();

            step = ExponentialSearch(Corner, End);

            if (step > 0)
            {
                End = BisectionSearch(Corner, End, Exp(step - 1), Exp(step));
            }
            Width = XVector3.Distance(Corner, End);
            /* refPoint -> lineEnd -> lineEnd2 ALWAYS clockwise; vertices[i++] ALWAYS clockwise */
        }