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

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

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

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

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

  • Отчёт по лабораторной работе;
  • Код программы + комментарии.
  • Проект в 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)
		);

}
Купить

250,00 

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

После оплаты Вы получите работу на электронную почту.
Лаба №1.rar
2389054
Оцени работу

рейтинг

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

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

kostyaLem

/ /

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

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

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