Beispiel #1
0
        public int CompareTo(object obj)
        {
            int      result   = 0;
            FormLine formLine = obj as FormLine;

            if (IsTransverseLine == formLine.IsTransverseLine)
            {
                if (IsTransverseLine)
                {
                    result = Compare(StartPoint.y, formLine.StartPoint.y);
                    if (result == 0)
                    {
                        result = Compare(StartPoint.x, formLine.StartPoint.x);
                        if (result == 0)
                        {
                            result = Compare(EndPoint.x, formLine.EndPoint.x);
                        }
                    }
                }
                else
                {
                    result = Compare(EndPoint.x, formLine.EndPoint.x);
                    if (result == 0)
                    {
                        result = Compare(formLine.EndPoint.y, EndPoint.y);
                        if (result == 0)
                        {
                            result = Compare(formLine.StartPoint.y, StartPoint.y);
                        }
                    }
                }
            }
            return(result);
        }
Beispiel #2
0
        public double GetDistanceOfNearestExtremePoints(FormLine formLine)
        {
            List <Point> extremePoints = new List <Point> {
                StartPoint, EndPoint, formLine.StartPoint, formLine.EndPoint
            };
            List <double> axisValues = IsTransverseLine?extremePoints.Select(point => point.x).ToList():
                                       extremePoints.Select(point => point.y).ToList();
            double distance = axisValues.Max() - axisValues.Min() - Length - formLine.Length;

            return(distance < 0 ? 0 : distance);
        }
Beispiel #3
0
        public double GetDistance(FormLine formLine)
        {
            if (IsTransverseLine != formLine.IsTransverseLine)
            {
                return(0);
            }

            double curValue   = IsTransverseLine?StartPoint.y:StartPoint.x;
            double otherValue = IsTransverseLine?formLine.StartPoint.y:formLine.StartPoint.x;

            double distance = Math.Abs(curValue - otherValue);

            return(distance);
        }
Beispiel #4
0
        public void MergeLine(FormLine formLine)
        {
            List <Point> extremePoints = new List <Point> {
                StartPoint, EndPoint, formLine.StartPoint, formLine.EndPoint
            };
            List <double> axisValues = IsTransverseLine ? extremePoints.Select(point => point.x).ToList() :
                                       extremePoints.Select(point => point.y).ToList();

            if (IsTransverseLine)
            {
                StartPoint.x = axisValues.Min();
                EndPoint.x   = axisValues.Max();
            }
            else
            {
                StartPoint.y = axisValues.Min();
                EndPoint.y   = axisValues.Max();
            }
        }
        public static bool ContainFormLine(this Rect rect, FormLine formLine)
        {
            bool isContain = true;

            try
            {
                Point centerPoint = formLine.CenterPoint;
                if (!rect.Contains(centerPoint.x, centerPoint.y))
                {
                    isContain = false;
                }
            }
            catch (Exception ex)
            {
                string err = ex.ToString();
                throw ex;
            }
            return(isContain);
        }