示例#1
0
        public void XYTupleEquality()
        {
            var c1 = new XYTuple(1, 1);
            var c2 = new XYTuple {
                X = 1, Y = 1
            };

            Assert.True(c1 == c2);
            Assert.True((c1 as object).Equals(c2));
            var c3 = new XYTuple {
                X = 2, Y = 2
            };

            Assert.True(c1 != c3);
            Assert.False((c1 as object).Equals(c3));
        }
示例#2
0
        public void XYTupleHashing()
        {
            var c1 = new XYTuple {
                X = 1, Y = 1
            };
            var c2 = new XYTuple {
                X = 1, Y = 1
            };

            Assert.True(c1.GetHashCode() == c2.GetHashCode());

            var c3 = new XYTuple {
                X = 2, Y = 2
            };

            Assert.True(c2.GetHashCode() != c3.GetHashCode());
        }
示例#3
0
        private void DrawTargetContacts(CanvasDrawingSession ds)
        {
            const float Z = 0;
            const float E = EditMargin + EditSize + EditMargin;

            var cp = Center;

            CheckContacts();
            var N = _contactTargets.Count;

            _targetPoints.Clear();
            for (int i = 0; i < N; i++)
            {
                var(cont, targ, point, size) = _contactTargets[i];
                var p = point * EditScale;
                var c = Center + p;
                _targetPoints.Add(c);
                ds.DrawCircle(c, 8, Colors.Cyan, 5);

                #region DrawSimulatedEdge  ====================================
                switch (targ)
                {
                case Target.N:
                    ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3);
                    break;

                case Target.S:
                    ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3);
                    break;

                case Target.E:
                    ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3);
                    break;

                case Target.W:
                    ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3);
                    break;

                case Target.NE:
                    ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3);
                    break;

                case Target.NW:
                    ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3);
                    break;

                case Target.SE:
                    ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3);
                    break;

                case Target.SW:
                    ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3);
                    break;

                case Target.EN:
                    ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3);
                    break;

                case Target.ES:
                    ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3);
                    break;

                case Target.WN:
                    ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3);
                    break;

                case Target.WS:
                    ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3);
                    break;

                case Target.NEC:
                    ds.DrawLine(c.X, c.Y, E, Z, Colors.Cyan, 3);
                    break;

                case Target.NWC:
                    ds.DrawLine(c.X, c.Y, Z, Z, Colors.Cyan, 3);
                    break;

                case Target.SEC:
                    ds.DrawLine(c.X, c.Y, E, E, Colors.Cyan, 3);
                    break;

                case Target.SWC:
                    ds.DrawLine(c.X, c.Y, Z, E, Colors.Cyan, 3);
                    break;
                }
                #endregion

                if (cont == Contact.Any && size > 0)
                {
                    var(p1, p2) = XYTuple.GetScaledNormal(targ, point, size, Center, EditScale);
                    ds.DrawLine(p1, p2, Color.FromArgb(0x80, 0xFF, 0, 0), 20);
                }
            }
        }