Лабораторная работа №3. Попадание точки в область

Задание

Разработать программу, определяющую попадание точки с координатами Лабораторная работа №3. Попадание точки в область - student2.ru и Лабораторная работа №3. Попадание точки в область - student2.ru в область, которая образуется в результате пересечения множеств:

1) круг с радиусом Лабораторная работа №3. Попадание точки в область - student2.ru и с центром, расположенном в начале координат;

2) полуплоскость по одну из сторон от прямой Лабораторная работа №3. Попадание точки в область - student2.ru ;

3) полуплоскость, ограниченная осями координат.

Варианты расположения плоскости представлены ниже:

1. Внутри круга, ниже прямой, правее оси ординат.

2. Внутри круга, ниже прямой, левее оси ординат.

3. Внутри круга, ниже прямой, выше оси абсцисс.

4. Внутри круга, ниже прямой, ниже оси абсцисс.

5. Внутри круга, выше прямой, выше оси абсцисс.

6. Внутри круга, выше прямой, ниже оси абсцисс.

7. Внутри круга, выше прямой, левее оси ординат.

8. Внутри круга, выше прямой, правее оси ординат.

9. Внутри круга, ниже прямой, правее оси ординат и выше оси абсцисс.

10. Внутри круга, ниже прямой, левее оси ординат и ниже оси абсцисс.

11. Внутри круга, выше прямой, левее оси ординат и выше оси абсцисс.

12. Внутри круга, выше прямой, правее оси ординат и ниже оси абсцисс.

В разработанной программе должны быть соблюдены следующие дополнительные условия:

· Должен быть дан корректный ответ при любых действительных значениях коэффициентов, при этом заданная прямая не обязательно должна пересекать окружность.

· Перед вводом координат точки, для которой будет осуществляться проверка на принадлежность области, проверяется существование области (по введённому значению Лабораторная работа №3. Попадание точки в область - student2.ru при всех прочих известных условиях). В случае отсутствия области ввод точки не производится, а осуществляется вывод соответствующего сообщения с предложением повторного ввода Лабораторная работа №3. Попадание точки в область - student2.ru .

· Для одной введённой области необходимо осуществлять проверку точек до тех пор, пока пользователь не откажется от продолжения.

· Аналогичное условие должно быть осуществлено для ввода области.

· Необходимо учитывать попадание точки на границу области.

Методические указания

Разработку программы рекомендуется начать с анализа всех возможных положений прямой, окружности и осей относительно друг друга. Данный процесс должен помочь выявить граничные условия для определения образования области. Другими словами, прежде всего, необходимо определить: а возникает ли замкнутая (и наверно не вырожденная в точку) область при заданных значениях радиуса окружности, угла наклона прямой и длины отрезка оси от начала координат до пересечения прямой с осью Y. Если область не образована или является вырожденной в точку, необходимо сообщить об этом пользователю и предложить ввести данные о другой области.

Далее следует перейти к анализу взаимного расположения области и точки с вводимыми координатами X и Y. По желанию пользователя анализ может быть повторён для точек с другими координатами X и Y, если перебор точек для данной области закончен, то пользователю предлагается, либо вернуться к определению параметров образующих область графических объектов, либо завершить работу с программой.

Предварительный анализ относительного расположения объектов (образующих тестовую область и самих тестовых точек) должен быть осуществлён в графическом виде и приведен в отчете. Необходимо определить отношение программы к граничным условиям (попадание точки на границу области). Разрешение всех условий производится с помощью формул геометрии.

Решение данной задачи требует построения алгоритма с различными вариантами последовательности действий. Такие алгоритмы носят название ветвящихся алгоритмов.

Необходимо учесть все те рекомендации по полноте тестировании, что были даны в методических указаниях к предыдущей работе.

Граничные условия при подобной постановке задачи не могут быть разрешены обычным равенством вследствие того, что в компьютерном понимании числа 10 и 10,0000001 – это всё-таки разные числа. Поэтому нецелесообразно использовать в программах условные выражения, содержащие при сравнении вещественных данных операции их равенства. Данная проблема решается введением, так называемой ширины границы. То есть при вычислении попадания считается не равенство координат точек и ограничивающих прямых (x=2 и y=5), а нахождение их вблизи данной границы (|x–2| < Eps и |y–5| < Eps), где Eps – малая ширина границы.

Рекомендуется прочесть разделы дополнительной литературы относительно пользовательских функций в языке C и применить полученные знания.

Наши рекомендации