cpp

Структура Rectangle: прямоугольная область

Структура Rectangle описывает прямоугольную область. Определение структуры:

type Rectangle struct {
   Min, Max Point
}
// Min.X <= X < Max.X, Min.Y <= Y < Max.Y
// (корректно, если Min.X <= Max.X, Min.Y <= Max.Y)

Пример создания объекта:

r := image.Rectangle{}
fmt.Println(r) // (0,0)-(0,0)
r = image.Rectangle{image.Point{10, 20}, image.Point{90, 100}}
fmt.Println(r.Min.X, r.Min.Y) // 10 20
fmt.Println(r.Max.X, r.Max.Y) // 90 100

Создать объект можно также с помощью функции Rect(). Формат функции:

image.Rect(x0 int, y0 int, x1 int, y1 int) image.Rectangle

Пример:

r := image.Rect(10, 20, 90, 100)
fmt.Println(r.Min) // (10,20)
fmt.Println(r.Max) // (90,100)

Структура Rectangle содержит следующие методы:

  • String() — возвращает строковое представление объекта. Формат метода:
(image.Rectangle).String() string

Пример:

r := image.Rect(0, 0, 100, 100)
fmt.Println(r.String()) // (0,0)-(100,100)
  • Eq() — возвращает true, если объекты равны, и false — в противном случае. Формат метода:
(image.Rectangle).Eq(s image.Rectangle) bool

Пример:

r := image.Rect(0, 0, 100, 100)
r2 := image.Rect(0, 0, 100, 100)
r3 := image.Rect(10, 10, 100, 100)
fmt.Println(r.Eq(r2)) // true
fmt.Println(r.Eq(r3)) // false
  • In() — возвращает true, если текущая прямоугольная область входит в состав прямоугольника s, и false — в противном случае. Формат метода:
(image.Rectangle).In(s image.Rectangle) bool

Пример:

r := image.Rect(10, 10, 90, 90)
r2 := image.Rect(0, 0, 100, 100)
r3 := image.Rect(20, 20, 110, 110)
fmt.Println(r.In(r2)) // true
fmt.Println(r.In(r3)) // false
  • Empty() — возвращает true, если прямоугольная область пустая, и false — в противном случае. Формат метода:
(image.Rectangle).Empty() bool

Пример:

r := image.Rectangle{}
r2 := image.Rect(0, 0, 100, 100)
fmt.Println(r.Empty())  // true
fmt.Println(r2.Empty()) // false
  • Canon() — выполняет нормализацию координат. Формат метода:
(image.Rectangle).Canon() image.Rectangle

Пример:

r := image.Rect(100, 100, 0, 0)
fmt.Println(r.Canon()) // (0,0)-(100,100)
  • Dx() — возвращает ширину прямоугольной области. Формат метода:
(image.Rectangle).Dx() int

Пример:

r := image.Rect(10, 10, 80, 100)
fmt.Println(r.Dx()) // 70
  • Dy() — возвращает высоту прямоугольной области. Формат метода:
(image.Rectangle).Dy() int

Пример:

r := image.Rect(10, 10, 80, 100)
fmt.Println(r.Dy()) // 90
  • Size() — возвращает объект структуры Point с шириной и высотой прямоугольной области. Формат метода:
(image.Rectangle).Size() image.Point

Пример:

r := image.Rect(10, 10, 80, 100)
fmt.Println(r.Size()) // (70,90)
  • Add() — складывает координаты. Формат метода:
(image.Rectangle).Add(p image.Point) image.Rectangle

Пример:

r := image.Rect(10, 10, 80, 100)
p := image.Point{10, 20}
fmt.Println(r.Add(p)) // (20,30)-(90,120)
  • Sub() — вычитает координаты. Формат метода:
(image.Rectangle).Sub(p image.Point) image.Rectangle

Пример:

r := image.Rect(10, 10, 80, 100)
p := image.Point{5, 10}
fmt.Println(r.Sub(p)) // (5,0)-(75,90)
  • Inset() — сжимает или расширяет прямоугольную область относительно центра. Формат метода:
(image.Rectangle).Inset(n int) image.Rectangle

Пример:

r := image.Rect(0, 0, 100, 100)
fmt.Println(r.Inset(10))  // (10,10)-(90,90)
fmt.Println(r.Inset(20))  // (20,20)-(80,80)
fmt.Println(r.Inset(-10)) // (-10,-10)-(110,110)
  • Overlaps() — возвращает true, если прямоугольные области пересекаются, и false — в противном случае. Формат метода:
(image.Rectangle).Overlaps(s image.Rectangle) bool

Пример:

r := image.Rect(0, 0, 50, 50)
r2 := image.Rect(30, 30, 100, 100)
r3 := image.Rect(60, 60, 100, 100)
fmt.Println(r.Overlaps(r2)) // true
fmt.Println(r.Overlaps(r3)) // false
  • Intersect() — возвращает область пересечения двух областей. Если области не пересекаются, то возвращается пустая область. Формат метода:
(image.Rectangle).Intersect(s image.Rectangle) image.Rectangle

Пример:

r := image.Rect(0, 0, 50, 50)
r2 := image.Rect(30, 30, 100, 100)
r3 := image.Rect(60, 60, 100, 100)
fmt.Println(r.Intersect(r2)) // (30,30)-(50,50)
fmt.Println(r.Intersect(r3)) // (0,0)-(0,0)
  • Union() — возвращает область включающую обе области. Формат метода:
(image.Rectangle).Union(s image.Rectangle) image.Rectangle

Пример:

r := image.Rect(0, 0, 50, 50)
r2 := image.Rect(30, 30, 100, 100)
r3 := image.Rect(60, 60, 100, 100)
fmt.Println(r.Union(r2)) // (0,0)-(100,100)
fmt.Println(r.Union(r3)) // (0,0)-(100,100)
  • RGBA64At() — возвращает информацию о цвете точки с указанными координатами. Формат метода:
(image.Rectangle).RGBA64At(x int, y int) color.RGBA64

Пример:

r := image.Rect(0, 0, 50, 50)
fmt.Println(r.RGBA64At(0, 0).RGBA()) // 65535 65535 65535 65535
Примечание

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp