Esempio n. 1
0
        ///// <summary>
        ///// key - Пересекаемый набор линий (другой объект)<br/>
        ///// value - Список пересекаемых линий (линия данного объекта, линии другого объекта)
        ///// </summary>
        public void CheckIntersects(LineSet otherLineSet)
        {
            var            otherIntersects     = otherLineSet.IntersectLineSets;
            IntersectLines thisIntersectLines  = new IntersectLines();
            IntersectLines otherIntersectLines = new IntersectLines();

            foreach (var line in lines)
            {
                List <Line> lineInters = new List <Line>();
                foreach (var otherLine in otherLineSet.lines)
                {
                    if (line.IsIntersect(otherLine))
                    {
                        lineInters.Add(otherLine);
                        //intersects.Add(otherItem); // В набор текущего объекта пересечений добавляем линию из другого набора
                        //var otherIntersects = otherLineSet.intersects; // Набор пересечений другого объекта
                        //List<Line> otherIntersectsValues;
                        //if (otherIntersects.ContainsKey(this))
                        //{
                        //    otherIntersectsValues = otherIntersects[this];
                        //}
                        //else
                        //{
                        //    otherIntersectsValues = new List<Line>();
                        //    otherIntersects.Add(this, otherIntersectsValues);
                        //}
                        //otherIntersectsValues.Add(item); // Добавление записи о пересечении для другого объекта
                    }
                }
                if (lineInters.Count > 0)
                {
                }
            }
        }
Esempio n. 2
0
        public void Add(Line line, Line lineOther)
        {
            LineSet        other = lineOther.Owner;
            IntersectLines intersected;

            if (!others.TryGetValue(other, out intersected))
            {
                intersected = new IntersectLines();
                others.Add(other, intersected);
            }
            List <Line> lines;

            if (!intersected.TryGetValue(line, out lines))
            {
                lines = new List <Line>();
                intersected.Add(line, lines);
            }
            lines.Add(lineOther);
        }
Esempio n. 3
0
        public Line(Dot first, Dot second, LineSet owner, LineContainer container)
        {
            First     = first ?? throw new ArgumentNullException(nameof(first));
            Second    = second ?? throw new ArgumentNullException(nameof(second));
            Owner     = owner ?? throw new ArgumentNullException(nameof(owner));
            Container = container ?? throw new ArgumentNullException(nameof(container));
            first.Lines.Add(this);
            second.Lines.Add(this);
            container.Add(this);
            RectangleF           = first.Point.GetRectangleFromTwoPoint(second.Point);
            first.PointChanged  += DotPointChanged;
            second.PointChanged += DotPointChanged;
            float firstY  = first.Point.Y;
            float secondY = second.Point.Y;

            Direction = firstY <secondY?Direction.Up
                                : firstY> secondY ? Direction.Down
                        : Direction.None;
        }
Esempio n. 4
0
 public RelationLineSets(LineSet owner)
 {
     this.owner = owner;
 }