Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Взаимное расположение окружности и отрезка

Автор:   •  Апрель 20, 2021  •  Лабораторная работа  •  2,372 Слов (10 Страниц)  •  472 Просмотры

Страница 1 из 10

Отчет по лабораторной работе №2

Выполнил Матюшин Роман Андреевич

Группа 121791

1. Цель работы

Научиться определять взаимное расположение окружности и отрезка

2. Алгоритм решения

Взаимное расположение окружности и прямой зависит от отношения радиуса R окружности к перпендикуляру H от центра окружности к прямой. Берем на прямой, точки A и B, соединяем их с центром окружности O, получаем треугольник AOB. Составим уравнение окружности и прямой. H – высота треугольника AOB, опущенная из вершины O, т.к SAOB = (1/2) * AB * H = (1/2) * |[AB,AO]| => H = |[AB,AO]| / |AB|.

Отрезок и окружность имеют 2 общие точки, если OA=OB=R

Отрезок и окружность имеют 1 общую точку, если H = R и углы между отрезком и центром окружности меньше 90, или если H < R и OA или OB > R 

Отрезок и окружность не имеют общих точек, если H > R, или если H < R и OA или OB < R

3. Описание программы

3.1 Структуры входных данных

Координаты первой точки

X1, Y1

Координаты второй точки

X2, Y2

Координаты центра окружности

O1, O2

Радиус окружности

R

3.2 Структура выходных данных

Результат обработки программы

Имеет 1,2 общие(-ую) точку, не имеет

3.3 Алгоритм программы

 1. Объявляем и вводим переменные точек и окружности.

 2. Соединяем точки и получаем треугольник, находим высоту.

 3. Сравниваем полученную высоту с радиусом окружности.

4. Программный код

#include <iostream>

#include <cmath>

using namespace std;

#define PI 3.14159265

int main()

{

        setlocale(LC_ALL, "rus");

        double x1, y1, x2, y2, O1, O2, R, h, a, b;

        cout << "Введите координаты 1 точки отрезка" << endl;

        cin >> x1 >> y1;

        cout << "Введите координаты 2 точки отрезка" << endl;

        cin >> x2 >> y2;

        cout << "Координаты 1 точки отрезка равны " << "(" << x1 << "," << y1 << ")" << endl;

        cout << "Координаты 2 точки отрезка равны " << "(" << x2 << "," << y2 << ")" << endl;

        cout << "Введите координаты центра окружности" << endl;

        cin >> O1;

        cin >> O2;

        cout << "Введите радиус окружности" << endl;

        cin >> R;

        cout << "Координаты центра окружности равны " << "(" << O1 << "," << O2 << ")" << endl;

        cout << "Радиус окружности равен " << R << endl;

        cout << "AB = " << "(" << (x2 - x1) << "," << (y2 - y1) << ")" << endl;

        cout << "OB = " << "(" << (x2 - O1) << "," << (y2 - O2) << ")" << endl;

        cout << "OA = " << "(" << (x1 - O1) << "," << (y1 - O2) << ")" << endl;

        cout << "|[AB,OB]| = " << abs(((x2 - x1) * (y2 - O2)) - ((x2 - O1) * (y2 - y1))) << endl;

...

Скачать:   txt (7.6 Kb)   pdf (166.7 Kb)   docx (73.6 Kb)  
Продолжить читать еще 9 страниц(ы) »
Доступно только на Essays.club