GeomVis  0.1
Набор классов Java для визуализации результатов работы геометрических алгоритмов
Algorithms.java
См. документацию.
1 package geom;
2 
3 import java.util.Arrays;
4 
10 public class Algorithms
11 {
12 
18  public static double distance2(double x1, double y1, double x2, double y2)
19  {
20  return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
21  }
22 
27  public static double distance2(Point p1, Point p2)
28  {
29  return distance2(p1.x, p1.y, p2.x, p2.y);
30  }
31 
36  public static double det(double a, double b, double c, double d)
37  {
38  return a * d - b * c;
39  }
40 
45  public static double vect(Point a1, Point a2, Point b1, Point b2)
46  {
47  return (a2.x - a1.x) * (b2.y - b1.y) - (b2.x - b1.x) * (a2.y - a1.y);
48  }
49 
50 
56  public static Point vect(Line m, Line n)
57  {
58 
59  double k = det(m.a, m.b, n.a, n.b);
60  if (Accur.eq(k, 0))
61  return null;
62  return new Point( -det(m.c, m.b, n.c, n.b) / k,
63  -det(m.a, m.c, n.a, n.c) / k);
64  }
65 
70  public static double distance(double x1, double y1, double x2, double y2)
71  {
72  return Math.sqrt(distance2(x1, y1, x2, y2));
73  }
74 
79  public static double distance(Point p1, Point p2)
80  {
81  return distance(p1.x, p1.y, p2.x, p2.y);
82  }
83 
89  {
90  return new Point((s.p1.x + s.p2.x) / 2, ((s.p1.y + s.p2.y) / 2));
91  }
92 
97  public double len(Segment s)
98  {
99  return distance(s.p1, s.p2);
100  }
105  public static double distance(Point p, Circle circle)
106  {
107  double d = distance(circle.c, p);
108  return d > circle.r ? d - circle.r : circle.r - d;
109  }
110 
111 }
Класс для работы с вещественными числами
Definition: Accur.java:6
double x
Definition: Point.java:13
double a
Definition: Line.java:12
Point p2
Definition: Segment.java:11
Point c
Definition: Circle.java:15
double c
Definition: Line.java:12
double b
Definition: Line.java:12
static double det(double a, double b, double c, double d)
Вычисляет косое произведение векторов (a, b) и (c, d)
Definition: Algorithms.java:36
static Point vect(Line m, Line n)
Вычисляет точку пересечения прямых. Возвращает null, если прямые параллельны
Definition: Algorithms.java:56
static double vect(Point a1, Point a2, Point b1, Point b2)
Вычисляет косое произведение векторов, заданных двумя точками
Definition: Algorithms.java:45
Point midPoint(Segment s)
Вычисляет середину отрезка
Definition: Algorithms.java:88
Point p1
Definition: Segment.java:11
Точка. Определяется двумя числами - координами в декартовой системе координат.
Definition: Point.java:10
static double distance2(Point p1, Point p2)
Вычисляет квадрат расстояния между двумя точками
Definition: Algorithms.java:27
static boolean eq(double a, double b)
Проверка вещественных чисел на равенство
Definition: Accur.java:14
static double distance(double x1, double y1, double x2, double y2)
Вычисляет расстояние между двумя точками, заданных координатами
Definition: Algorithms.java:70
static double distance(Point p1, Point p2)
Вычисляет расстояние между двумя точками
Definition: Algorithms.java:79
double len(Segment s)
Вычисляет длину отрезка
Definition: Algorithms.java:97
static double distance2(double x1, double y1, double x2, double y2)
Вычисляет квадрат расстояния между двумя точками, заданных координатами
Definition: Algorithms.java:18
Отрезок. Определяется двумя точками
Definition: Segment.java:9
Прямая. Определяется двумя точками
Definition: Line.java:9
static double distance(Point p, Circle circle)
Вычисляет расстояние между точкой и окружностью
Окружность. Определяется точкой центра и радиусом
Definition: Circle.java:11
Основной класс - функции геометрических алгоритмов Используются команадами.
Definition: Algorithms.java:10
double y
Definition: Point.java:14