Абстракция с помощью данных [как рассчитать координаты вершин прямоугольника с парраллельными осям сторонами]

Добрый день. Работаю с абстракцией. Задание просто выносит все остатки мозга. Скажите пожалуйста как мне начать реализовать данную функцию?!

Реализуйте абстракцию (набор функций) для работы с прямоугольниками, стороны которого всегда параллельны осям. Прямоугольник может располагаться в любом месте координатной плоскости.

При такой постановке, достаточно знать только три параметра для однозначного задания прямоугольника на плоскости: координаты левой верхней точки, ширину и высоту. Зная их, мы всегда можем построить прямоугольник одним единственным способом.

Основной интерфейс:

makeRectangle(point, width, height) (конструктор) – создает прямоугольник. Принимает параметры: левую-верхнюю точку, ширину и высоту. Ширина и высота – положительные числа.
Селекторы getStartPoint(rectangle), getWidth(rectangle) и getHeight(rectangle)

containsOrigin(rectangle) – проверяет, принадлежит ли центр координат прямоугольнику (не лежит на границе прямоугольника, а находится внутри). Чтобы в этом убедиться, достаточно проверить, что все вершины прямоугольника лежат в разных квадрантах (их можно высчитать в момент проверки).

Экспортируйте функции makeRectangle(point, width, height) и containsOrigin(rectangle).

Добрый.

Лирика.

Люди, начиная программировать, думают что программирование это про написание кода. На практике очень много времени уходит на то чтобы понять задачу. Тут ситуация не исключение. Сначала нужно понять чего имеется в виду, а потом понять как это выразить в терминах языка программирования и потом только написать код.

Для понимания задачи мне очень помогает написать несколько конкретных примеров. Это упрощает понимание задачи, дает мозгу заметить паттерн.

Практика.

Стороны “параллельные осям” значит что все стороны прямоугольника будут или строго вертикальны или строго горизонтальны. Вот несколько примеров таких прямоугольников


Далее конкретный прямоугольник. Вот картинка, текст ниже написан с учетом картинки:

"При такой постановке, достаточно знать только три параметра для однозначного задания прямоугольника на плоскости: координаты левой верхней точки, ширину и высоту. "

Имееся в виду что имея координату одной точки верхней левой точки X1, Y1 можно вычесть все остальные координаты точек.

Правая верхняя точка будет иметь Y координату такую же как и верхняя левая точка. А вот ее X будет X1 + ширина прямоугольника (d на картинке).

Левая нижняя точка будет иметь такую же X что и X1. А вот Y будет Y1 - высота прямоугольника (с на картинке).

С последней точкой история такая же, оставлю тебе удовольствие в этом разобраться.

1 лайк

Огромнейшее спасибо. Я действительно привел в порядок мысли. Сейчас осталось разобраться что к чему. Думаю ночка на это уйдет. Зато какой будет бекграунд. Примного благодарен за труд!

1 лайк