Сейчас работаем

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

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

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

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

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

  • Отчёт по лабораторной работе;
  • Код программы + комментарии.
  • Проект в 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 
(без учета комиссии 3,8 %)
Сразу после оплаты Вы получите работу на электронную почту. Файлы отправляются автоматически.
Другие работы автора
Тип Название Рейтинг Категория Стоимость
Курсовая Автоматизированная информационная система складского учета (C#, WinForms) 14 .NET (C#) 3 000,00
Исходник АИС База данных "Настольные игры" (C#, WinFroms, SQLite) 0 .NET (C#) 2 200,00
Лабораторная Алгоритм Банкира C# 0 .NET (C#) 450,00
Комментарии (0)

kostyaLem

/ /

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

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

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

300,00 

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

Сразу после оплаты Вы получите работу на электронную почту. Файлы отправляются автоматически.
Лаба №1.rar
2389054
Оцени работу

рейтинг

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

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