Практический пример на принадлежность точки кольцу.
Постановка задачи
На плоскости нарисовано кольцо с центром в точке (x0,y0). И радиусами границ r1<r2. Кроме того, на этой же плоскости дана точка с координатами (x, y). Необходимо определить, принадлежит ли эта точка кольцу.
|
|
Решение задачи
Для решения задачи необходимо вычислить расстояние от центра кольца до точки, и сравнить его с радиусами: 1. Если длина отрезка от центра до точки меньше чем радиус внешней окружности и при этом больше, чем радиус внутренней окружности, то точка принадлежит кольцу.
В противном случае точка не принадлежит кольцу. 2. Для выяснения расстояния, от центра до точки мы воспользуемся теоремой Пифагора - Квадрат гипотенузы равен сумме квадратов катетов. Следовательно - длина гипотенузы равна корню квадратному из суммы квадратов катетов.
Примечание:Нам понадобятся дополнительные знания для получения степени и корня квадратного. 1. В программу необходимо подключить библиотеку для использования математических функций под названием math.h. 2. Для возведения в степень используется функция pow(double num,double exp), где num это число для возведения в степень, а exp - сама степень. 3. Для извлечения корня квадратного используется функция sqrt(double num), где num это число из которого извлекают корень.
c=sqrt(pow(a,2)+pow(b,2));L=c; | 3. Осталось выяснить длины катетов, на рисунке видно, как это сделать.
Теперь осталось собрать все части решения в единое целое.
|
|
Код реализации.
#include <iostream>#include <math.h>using namespace std;void main() { // Объявление переменных int x0, y0, r1, r2, x, y; float L; // Запрос на ввод необходимых данных cout<<"Input coordinates of circle’s center (X0, Y0): "; cin>>x0>>y0; cout<<"Input circle radiuses R1 and R2: "; cin>>r1>>r2; cout<<"Input point coordinates (X, Y): "; cin>>x>>y; // Выведение формулы L = sqrt(pow(x - x0, 2) + pow(y - y0, 2)); //Анализ результатов if ((r1 < L)&& (L < r2 )) { cout<<"This point is situated inside the circle.\n"; } else { cout<<"This point is not situated inside the circle.\n"; }} | Предыдущая
| Оглавление
| Следующая
| | Предыдущая
| Оглавление
| Следующая
| | | | | | |
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|