Example #1
0
 public void TestCoordsDistance()
 {
     Assert.AreEqual(26.121783, GeometryCalcs.Distance(-1.5, -7, -25.345, -17.666), DOUBLE_EPSILON,
                     "test dist coord #1");
     Assert.AreEqual(5, GeometryCalcs.Distance(-2, 1, 2, -2),
                     "test dist coord #2");
 }
Example #2
0
 public void TestPointDistance()
 {
     Assert.AreEqual(3.5, GeometryCalcs.Distance(new Point(0, 0), new Point(3.5, 0)),
                     "test dist #1");
     Assert.AreEqual(4.75, GeometryCalcs.Distance(new Point(-1, -3), new Point(-1, 1.75)),
                     "test dist #2");
 }
 /// <summary>
 /// Данные треугольника, который не является прямоугольным и
 /// не является равносторонним.
 /// Стороны должны быть заданы в отсортированном виде
 /// </summary>
 /// <param name="side1">Первая сторона (самая короткая)</param>
 /// <param name="side2">Вторая сторона (средняя по длине)</param>
 /// <param name="side3">Третья сторона (самая длинная)</param>
 public SemiScaleneTriangleData(double side1, double side2, double side3)
     : base(side1, side2, side3)
 {
     Debug.Assert(side1 > 0, "Triangle side 1 must be positive");
     Debug.Assert(side2 > 0, "Triangle side 2 must be positive");
     Debug.Assert(side3 > 0, "Triangle side 3 must be positive");
     Debug.Assert(GeometryCalcs.TriangleExists(side1, side2, side3), "Triangle must exist");
     Debug.Assert(side1 <= side2 && side2 <= side3, "Triangle sides must be sorted");
 }
Example #4
0
        /// <summary>
        /// Инифиулизирует треугольник
        /// </summary>
        /// <param name="vertices">Массив из трёх точек-вершин треугольника</param>
        public void Init(Point[] vertices)
        {
            Debug.Assert(vertices != null && vertices.Length == 3,
                         "Triangle must be determined by 3 vertices");
            double a = GeometryCalcs.Distance(vertices[0], vertices[1]);
            double b = GeometryCalcs.Distance(vertices[1], vertices[2]);
            double c = GeometryCalcs.Distance(vertices[2], vertices[0]);

            _Init(new double[] { a, b, c });
        }
Example #5
0
 /// <summary>
 /// Данные прямоугольного треугольника
 /// </summary>
 /// <param name="cathetus1">Первый катет</param>
 /// <param name="cathetus2">Второй катет</param>
 /// <param name="hypotenuse">Гипотенуза</param>
 public RightAngledTriangleData(double cathetus1, double cathetus2, double hypotenuse)
     : base(cathetus1, cathetus2, hypotenuse)
 {
     Debug.Assert(cathetus1 > 0, "Triangle cathetus 1 must be positive");
     Debug.Assert(cathetus2 > 0, "Triangle cathetus 2 must be positive");
     Debug.Assert(hypotenuse > 0, "Triangle hypotenuse must be positive");
     Debug.Assert(cathetus1 <= hypotenuse && cathetus2 <= hypotenuse, "Invalid sides");
     Debug.Assert(GeometryCalcs.TriangleIsRightAngled(cathetus1, cathetus2, hypotenuse),
                  "This class must be used for right-angled triangle");
 }
 /// <summary>
 /// Данные обычного (не равностороннего) треугольника, заданного тремя сторонами
 /// </summary>
 /// <param name="cathetus1">Первая сторона</param>
 /// <param name="cathetus2">Вторая сторона</param>
 /// <param name="hypotenuse">Третья сторона</param>
 protected AllSidesInfoTriangleData(double side1, double side2, double side3)
 {
     Debug.Assert(side1 > 0, "Triangle side 1 must be positive");
     Debug.Assert(side2 > 0, "Triangle side 2 must be positive");
     Debug.Assert(side3 > 0, "Triangle side 3 must be positive");
     Debug.Assert(GeometryCalcs.TriangleExists(side1, side2, side3), "Triangle must exist");
     Debug.Assert(!GeometryCalcs.TriangleIsEquilateral(side1, side2, side3),
                  "This class must be used for non-equilateral triangle");
     this.side1 = side1;
     this.side2 = side2;
     this.side3 = side3;
 }
Example #7
0
 /// <summary>
 /// Инициализация треугольника по трём сторонам
 /// </summary>
 /// <param name="sides">Массив из трёх длин сторон</param>
 private void _Init(double[] sides)
 {
     // могут быть заданы "плохие" точки, из-за которых стороны нулевые
     // проверка <= на всякий случай
     foreach (double side in sides)
     {
         if (side <= 0)
         {
             return;
         }
     }
     // если треугольник с такими сторонами не существует,
     // это некорректно заданная команда
     if (GeometryCalcs.TriangleExists(sides[0], sides[1], sides[2]))
     {
         t = new Triangle(sides[0], sides[1], sides[2]);
     }
 }
 public void TestCoordsMidPoint()
 {
     Assert.AreEqual(new Point(0.5, -1.5), GeometryCalcs.Midpoint(-4.5, -3, 5.5, 0),
                     "midpoint coords #1");
 }
Example #9
0
 /// <summary>
 /// Команда вычисления расстояния между точками
 /// </summary>
 /// <param name="a">Первая точка</param>
 /// <param name="b">Вторая точка</param>
 public DistanceCommand(Point a, Point b)
 {
     result = GeometryCalcs.Distance(a, b);
 }