Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 7: Программирование на Visual C# искусственного интеллекта. Издание 2
Шрифт:
Прямоугольник, описанный вокруг изображения батона хлеба bread.jpg, показан на рис. 5.1.
Рис. 5.1. Прямоугольник, описанный вокруг хлеба.
Ширина полей между объектом и описанным вокруг объекта прямоугольником должна быть сведена к минимуму, чтобы объект обязательно касался прямоугольника в как можно большем количестве точек и отрезков
В среде выполнения .NET Framework (для настольных компьютеров) известна структура Rectangle (из пространства имён System.Drawing), у которой метод-конструктор Rectangle Constructor имеет несколько перегрузок. Наиболее применяемая перегрузка метода-конструктора Rectangle Constructor (которую далее и мы будем часто применять) с параметрами (Int32, Int32, Int32, Int32) структуры Rectangle на главных (в мире программирования) языках приведена в табл. 5.1.
Таблица 5.1.
Метод-конструктор Rectangle Constructor (Int32, Int32, Int32, Int32) структуры Rectangle.
Visual Basic (Declaration)
Public Sub New ( _
x As Integer, _
y As Integer, _
width As Integer, _
height As Integer _
Visual Basic (Usage))
Dim x As Integer
Dim y As Integer
Dim width As Integer
Dim height As Integer
Dim instance As New Rectangle(x, y, width, height)
C#
public Rectangle (
int x,
int y,
int width,
int height
)
C++
public:
Rectangle (
int x,
int y,
int width,
int height
)
J#
public Rectangle (
int x,
int y,
int width,
int height
)
JScript
public function Rectangle (
x : int,
y : int,
width : int,
height : int
)
В этом определении
x – координата “x” верхнего левого угла прямоугольника;
y – координата “y” верхнего левого угла прямоугольника;
width – ширина (по оси “x”) прямоугольника;
height – высота (по оси “y”) прямоугольника.
Далее в нашей программе мы сначала объявим прямоугольники, описанные вокруг объектов, как новые переменные, например, так:
//The rectangle, described around the first object:
Rectangle cheeseRectangle;
//The rectangle, described around the second object:
Rectangle breadRectangle;
а затем в каком-либо методе создадим (при помощи ключевого слова new) и инициализируем эти объекты-прямоугольники, например, так:
cheeseRectangle = new Rectangle(cx, cy,
cheeseImage.Width, cheeseImage.Height);
breadRectangle = new Rectangle(bx, by,
breadImage.Width, breadImage.Height);
5.2. Обнаружение столкновения прямоугольников, описанных вокруг подвижных объектов
В этой структуре Rectangle (из пространства имён System.Drawing) имеются методы, которые могут обнаруживать пересечения различных перемещающихся прямоугольников. Эти методы определяют, находится ли точка одного прямоугольника внутри другого прямоугольника, и если находится, то программа определяет эту ситуацию и как столкновение этих двух прямоугольников, и как столкновение двух объектов, расположенных внутри этих прямоугольников.
Когда далее при написании программы мы поставим оператор-точку “.” после какого-либо объекта структуры Rectangle, то увидим подсказку с двумя основными методами Intersect и IntersectsWith (рис. 5.2) для обнаружения пересечения двух прямоугольников.
Рис. 5.2. Подсказка с методами Intersect и IntersectsWith.
Определение для наиболее применяемого метода IntersectsWith (который далее и мы будем часто применять) с параметром (Rectangle rect) структуры Rectangle на главных (в мире программирования) языках приведено в табл. 5.2.
Таблица 5.2.
Определение метода Rectangle.IntersectsWith структуры Rectangle.
Visual Basic (Declaration)
Public Function IntersectsWith ( _
rect As Rectangle _
) As Boolean
Visual Basic (Usage)
Dim instance As Rectangle
Dim rect As Rectangle
Dim returnValue As Boolean
returnValue = instance.IntersectsWith(rect)