Имеют ли два заданных прямоугольника на плоскости общую область.

Постановка задачи:

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

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

Работа содержит:

  • Отчёт по лабораторной работе;
  • Код программы + комментарии.
  • Проект в Visual Studio(С++).

Отчёт по лабораторной работе содержит:

  • Постановка задачи;
  • Исходные данные, подаваемые программе;
  • Особые ситуации;
  • Математические методы и алгоритмы решения задачи;
  • Форматы представления данных в программе;
  • Структура программы;
  • Описание хода выполнения лабораторной работы;
  • Исходный код программы.

Общий алгоритм выполнения программмы:

  • Прогрмма запрашивает диагональные точки(x,y) прямоугольников (недостающие точки достраиваются);
  • Для каждого прямоугольника предоставляется выбрать вариант вращения (относительно центра самого прямоугольника или указанных координат).
  • На экран выводятся конечные точки прямоугольников и результат: имеют ли прямоугольники пересеченеие.

Часть кода:

// Поворот точек прямоугольника;
// Параметры: &rec - ссылка на объект типа Rectangle, cx, cy - относительно каких координат осуществлять поворот, 
// alpha - угол поворота;
void move_point(Rectangle &rec, double cx, double cy, double alpha)
{
	const double Radian = alpha * M_PI / 180.0; // Значение угла в радианах

	// Для промежуточных расчётов
	Point p1_temp = rec.p1;
	Point p2_temp = rec.p2;
	Point p3_temp = rec.p3;
	Point p4_temp = rec.p4;

	rec.p1 = Point(
		RoundTo(cos(Radian)*(p1_temp.x - cx) - sin(Radian)*(p1_temp.y - cy) + cx, 2),
		RoundTo(sin(Radian)*(p1_temp.x - cx) + cos(Radian)*(p1_temp.y - cy) + cy, 2)
		);
	rec.p2 = Point(
		RoundTo(cos(Radian)*(p2_temp.x - cx) - sin(Radian)*(p2_temp.y - cy) + cx, 2),
		RoundTo(sin(Radian)*(p2_temp.x - cx) + cos(Radian)*(p2_temp.y - cy) + cy, 2)
		);
	rec.p3 = Point(
		RoundTo(cos(Radian)*(p3_temp.x - cx) - sin(Radian)*(p3_temp.y - cy) + cx, 2),
		RoundTo(sin(Radian)*(p3_temp.x - cx) + cos(Radian)*(p3_temp.y - cy) + cy, 2)
		);
	rec.p4 = Point(
		RoundTo(cos(Radian)*(p4_temp.x - cx) - sin(Radian)*(p4_temp.y - cy) + cx, 2),
		RoundTo(sin(Radian)*(p4_temp.x - cx) + cos(Radian)*(p4_temp.y - cy) + cy, 2)
		);

}

Присоединяйся

Зарегестрируйся с помощью социальных сетей.

Публикуй

Опиши работу, прикрепи файлы и назначь цену.

Зарабатывай

Получай пассивный доход с продажи работ.

Тебе понадобится 5 минут для публикации работы на сайте.
Купить

250,00 

(без учета комиссии 3,8 %)

Лаба №1.rar
2389054
Оцени работу

рейтинг

Поделись работой с друзьями

Мы не грузим циферки, чтоб ты увидел контент как можно быстрее;

Комментарии (0)

kostyaLem

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегестрированые пользователи имеют возможность комментировать работы
Имеют ли два заданных прямоугольника на плоскости общую область.
Определить, имеют ли два заданных прямоугольника на плоскости общую область (При любом расположении прямоугольников и под разными углами).
Категория: Образование
Стоимость: 250,00