На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

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

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

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

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

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

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

}
Купить 300,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

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

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

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

300,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

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

рейтинг

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