GeomVis  0.1
Набор классов Java для визуализации результатов работы геометрических алгоритмов
Commands.java
См. документацию.
1 package control;
2 
3 import geom.Algorithms;
4 import geom.Circle;
5 import geom.GObject;
6 import geom.Line;
7 import geom.Point;
8 import geom.Polygon;
9 import geom.Segment;
10 
11 import java.util.Iterator;
12 
14 
16 //Get objects from Container object by object
18 /*
19  Iterator<Geom> iterator = gObjects.iterator();
20  while (iterator.hasNext()) {
21  Geom gobj = iterator.next();
22  // TODO (with gobj)...
23  }
24  */
26 //Get objects from Container as an Array
28 /*
29  int N = gObject.size();
30  Geom gobjs[]= new Geom[N];
31  gObject.toArray(gobjs);
32  */
33 // can use any subclass of Geom instead of Geom
34 //(if sure)
36 
50 public class Commands
51 {
52 
57  public static void crossLines(GeomContainer gObjects)
58  {
59 
60  GeomContainer sel = gObjects.getSelectedObjects();
61  sel = sel.getObjectsTypeOf(Line.class);
62  if (sel.size() != 2)
63  {
64  Message.out("You have to select exactly two LINES");
65  return;
66  }
67  Line a[] = new Line[2];
68  sel.toArray(a);
69  Point p = Algorithms.vect(a[0], a[1]);
70  if (p != null)
71  gObjects.add(p);
72  else
73  Message.out("There are no cross points!");
74  }
75 
80  public static void selectAll(GeomContainer gObjects)
81  {
82  int N = gObjects.size();
83  GObject gobjs[] = new GObject[N];
84  gObjects.toArray(gobjs);
85  gObjects.clear();
86  for (int i = 0; i < N; i++)
87  {
88  gobjs[i].view().select();
89  gObjects.add(gobjs[i]);
90  }
91  }
92 
97  public static void deselectAll(GeomContainer gObjects)
98  {
99  int N = gObjects.size();
100  GObject gobjs[] = new GObject[N];
101  gObjects.toArray(gobjs);
102  gObjects.clear();
103  for (int i = 0; i < N; i++)
104  {
105  gobjs[i].view().deselect();
106  gObjects.add(gobjs[i]);
107  }
108  }
109 
114  public static void clear(GeomContainer gObjects)
115  {
116  gObjects.clear();
117  gObjects.remove(new Point(0, 0));
118  }
119 
120 
125  public static void makePolygon(GeomContainer gObjects)
126  {
127  GeomContainer sel = gObjects.getSelectedObjects();
128  sel = sel.getObjectsTypeOf(Point.class);
129  int N = sel.size();
130  if (N < 2)
131  return;
132 
133  Point points[] = new Point[N];
134  sel.toArray(points);
135  gObjects.add(new Polygon(points));
136  }
141  public static void makeLine(GeomContainer gObjects)
142  {
143  GeomContainer sel = gObjects.getSelectedObjects();
144  sel = sel.getObjectsTypeOf(Point.class);
145  if (sel.size() != 2)
146  {
147  Message.out("You have to select exactly two POINTS");
148  return;
149  }
150  Point a[] = new Point[2];
151  sel.toArray(a);
152  gObjects.add(new Line(a[0], a[1]));
153  }
154 
159  public static void delLastSelected(GeomContainer gObjects)
160  {
161  GeomContainer sel = gObjects.getSelectedObjects();
162  Iterator<GObject> iterator = sel.iterator();
163  if (iterator.hasNext())
164  {
165  gObjects.remove(iterator.next());
166  }
167  }
168 
169 }
Kласс для хранения графических объектов
static void makePolygon(GeomContainer gObjects)
Команда добавления многоугольника на контейнер
Definition: Commands.java:125
Многоугольник. Определяется массивом точек
Definition: Polygon.java:13
static void delLastSelected(GeomContainer gObjects)
Команда удаления последнего выделенного объекта из контейнера
Definition: Commands.java:159
static void makeLine(GeomContainer gObjects)
Команда построения прямой, проходящей через две выделенные точки
Definition: Commands.java:141
static void selectAll(GeomContainer gObjects)
Команда выделения всех объектов контейнера
Definition: Commands.java:80
Точка. Определяется двумя числами - координами в декартовой системе координат.
Definition: Point.java:10
Команды - статические функции с прототипом public static void methodName(GeomContainer gObjects) ...
Definition: Commands.java:50
static void clear(GeomContainer gObjects)
Команда удаления всех объектов из контейнера
Definition: Commands.java:114
Отрезок. Определяется двумя точками
Definition: Segment.java:9
Абстрактный суперкласс для всех графических объектов
Definition: GObject.java:14
static void crossLines(GeomContainer gObjects)
Команда построения точки пересечения различных прямых
Definition: Commands.java:57
Прямая. Определяется двумя точками
Definition: Line.java:9
Окружность. Определяется точкой центра и радиусом
Definition: Circle.java:11
static void deselectAll(GeomContainer gObjects)
Команда снятия выделения со всех объектов контейнера
Definition: Commands.java:97
Основной класс - функции геометрических алгоритмов Используются команадами.
Definition: Algorithms.java:10