Итак, у меня есть готовая рабочая функция, которая находит точки пересечения, а также класс прямоугольника. Я хочу создать список всех этих пунктов.
Вы можете мне посоветовать, как это сделать? Спасибо.
public class Rectangle {
private double width;
private double height;
private Point upperLeft;
// Create a new rectangle with location and width/height.
public Rectangle(Point upperLeft, double width, double height){
this.upperLeft = upperLeft;
this.width = width;
this.height = height
}
// Return a (possibly empty) List of intersection points
// with the specified line.
public java.util.List<Point> intersectionPoints(Line line){
//**I don't know
}
}
Я думал о чем-то вроде создания 2-х массивов из 4.
Line[] rectLines = new Line[4];
Point[] IntersectionPoints = new Point[4];
, затем создайте 4 строки на основе углов прямоугольника и добавьте их в массив.
rectLines[0] = new Line(rect.getUpperLeft().getX(), rect.getUpperLeft().getY(), rect.getWidth(), rect.getUpperLeft().getY());
rectLines[1] = new Line(rect.getUpperLeft().getX(), rect.getUpperLeft().getY(), rect.getUpperLeft().getX(), rect.getHeight());
rectLines[2] = new Line(rect.getUpperLeft().getX(), rect.getHeight(), rect.getWidth(), rect.getHeight());
rectLines[3] = new Line(rect.getWidth(), rect.getUpperLeft().getY(), rect.getWidth(), rect.getHeight());
затем запустите al oop, который добавляет, который использует мою функцию поиска пересечений, находит точки и добавляет их в массив точек.
for (int i=0; i<4; i++) {
if (intersectionWith(rectLines[i]) != null)
IntersectionPoints[i] = intersectionWith(rectLines[i]);}
Функция « crossctionWith » возвращает NULL, если точки пересечения нет, ad возвращает точку, если точка есть.
Но что теперь? Как мне составить список? Как вы думаете, разумно определить размер массива точек равным 4, хотя я действительно не знаю, будет ли он 0,1,2,3 или 4? И что тогда будет с неиспользуемыми слотами в массиве?
ps что будет, если линия пройдет через угол? это означает, что у него будет 2 точки пересечения, потому что он будет пересекаться с 2 сторонами прямоугольника.
Спасибо.