2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10

Как выполнить проверку на принадлежность расположенности точки на окружности

11.01.2014, 17:34. Показов 3317. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите разобраться с вопросом,пожалуйста.
У нас есть массив размером [N,2] ,N вводится пользователем.
Массив заполняется вещественными рандомными числами ,такими ,что эти числа расположены на окружности радиуса R(R вводится ) с центром в (0,0).
Уравнение окружности: X^2+Y^2=R^2
Как выполнить проверку на принадлежность расположенности точки на окружности?
метод,с созданным массивом из рандомных чисел.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 static void Main(string[] args)
        {
            uint n;
            double r;
            getData(out n, out r);
            double[,] massiv;
            CreateMatrix(n, out massiv, r);
     
        }
 
        private static void getData(out uint n, out double r)
        {
            do { Console.WriteLine("Vvedie chislo n:"); }
            while (!uint.TryParse(Console.ReadLine(), out n));
 
            do { Console.WriteLine("Vvedie chislo r:"); }
            while (!double.TryParse(Console.ReadLine(), out r));
        }
 
        private static void CreateMatrix(uint n, out double[,] massiv, double r)
        {
            Random s = new Random();
            massiv = new double[n, 2];
            for (int i = 0; i < n; ++i)
            {
                Console.WriteLine();
                for (int j = 0; j < 2; ++j)
                {
                    massiv[i, j] = (-r) + (r + r) * s.NextDouble();
                    Console.Write(massiv[i, j] + "\t");
                }
            }
 
        }
Миниатюры
Как выполнить проверку на принадлежность расположенности точки на окружности  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2014, 17:34
Ответы с готовыми решениями:

Как найти принадлежность точки к окружности??!
Как записать решение в vba, принадлежит ли точка с координатами (х, у) выделенной области?

Принадлежность точки к окружности
Определить,принадлежит ли указанная пользователем точка заданному кругу на плоскости. Указание. Для описания точки использовать...

Принадлежность точки к окружности
Даны точки А (x1, y1), В (x2, y2), С (x3, y3) и D (x4, y4). Выяснить, есть ли точка D центром окружности, проходящей через точки А, В, С.

11
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 18:21
Ну например
Если n[i,1]*n[i,1]+n[i,2]*n[i,2] = R*R
1
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10
11.01.2014, 18:43  [ТС]
Было бы неплохо это в рабочем коде записать)
Потому что у меня не заработало(

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
static void Main(string[] args)
        {
            uint n;
            double r;
            getData(out n, out r);
            double[,] massiv;
            CreateMatrix(n, out massiv, r);
     
        }
 
        private static void getData(out uint n, out double r)
        {
            do { Console.WriteLine("Vvedie chislo n:"); }
            while (!uint.TryParse(Console.ReadLine(), out n));
 
            do { Console.WriteLine("Vvedie chislo r:"); }
            while (!double.TryParse(Console.ReadLine(), out r));
        }
 
        private static void CreateMatrix(uint n, out double[,] massiv, double r)
        {
            Random s = new Random();
            massiv = new double[n, 2];
            for (int i = 0; i < n; ++i)
            {
                Console.WriteLine();
                for (int j = 0; j < 2; ++j)
                {
                    massiv[i, j] = (-r) + (r + r) * s.NextDouble();
                   //Трудность в правильности написания проверки на принадлежность расположения точки на окружности 
                   if (massiv[i, 0] * massiv[i, 0] + massiv[i, 1] * massiv[i, 1] != r * r) 
                    {
                        massiv[i, j] = (-r) + (r + r) * s.NextDouble();
                        Console.Write(massiv[i, j] + "\t");
                    }
                    else
                    Console.Write(massiv[i, j] + "\t");
                }
            }
 
        }
 Комментарий модератора 
Прекращайте постить код на pastebin, на форуме есть теги для многих языков, C# в их числе - [CSHARP]код[/CSHARP].
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 19:27
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private static void CreateMatrix(uint n, out double[,] massiv, double r)
        {
            Random s = new Random();
            massiv = new double[n, 2];
 
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    massiv[i, j] = (-2*r) + 4*r * s.NextDouble();
                }
 
                Console.WriteLine("X={0}; Y={1}",massiv[i, 0], massiv[i, 1]);
                if (massiv[i, 0] * massiv[i, 0] + massiv[i, 1] * massiv[i, 1] > r * r)
                    Console.WriteLine("Вне окружности.");
                else if (massiv[i, 0] * massiv[i, 0] + massiv[i, 1] * massiv[i, 1] < r * r)
                    Console.WriteLine("Внутри окружности.");
                else
                    Console.WriteLine("На окружности.");                
            }
0
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10
11.01.2014, 20:55  [ТС]
В том то и загвоздка у меня возникла,нужно чтобы не определялось ,где точка :внутри , вне окружности,а именно лежала.Как это в коде прописать?
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 21:07
ну пиши при r = 5 и
massiv[1,0] = 5; massiv[1,1] = 0;

C#
1
2
 if (massiv[1, 0] * massiv[1, 0] + massiv[1, 1] * massiv[1, 1]  == r * r)
Console.WriteLine("Именно лежала.");
0
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10
11.01.2014, 22:15  [ТС]
Всё это рандомно должно заполняться,в этом и дело
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 22:17
То есть ты реально считаешь, что с первого раза в рандоме (r.NextDouble) может выпасть значение 5.0 и 0.0? или любые другие, лежащие точно на окружности?
0
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10
11.01.2014, 22:20  [ТС]
Нет ,я имею ввиду ,что нужно составить условие ,при котором рандомные числа,образующие координаты точек,подставленные в уравнение окружности давали радиус в квдарате,чтобы эти координаты лежали на окружности
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 22:33
Тогда тебе пожалуй лучше использовать цикл while, вместо for. Ну вот например, правда у меня ничего не нашло, но наверное ты это имеешь ввиду.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private static void test(uint n, out double[,] massiv, double r)
        {
            Random s = new Random();
            massiv = new double[n, 2];
 
            int i = 0, k =0;
            while (i< n)
            {
                for (int j = 0; j < 2; j++)
                {
                    massiv[i, j] = -r + 2 * r * s.NextDouble();
                }
                if (massiv[i, 0] * massiv[i, 0] + massiv[i, 1] * massiv[i, 1] == r * r)
                {
                    i++;
                }
                Console.WriteLine(k++);
                   
            };
        }
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
11.01.2014, 22:36
Лучший ответ Сообщение было отмечено как решение

Решение

Зачем мучаться с проверкой? Воспользуемся уравнением окружности в полярных координатах:
https://www.cyberforum.ru/cgi-bin/latex.cgi?y=R\cdot \sin (\varphi ) \\x=R\cdot \cos (\varphi)
Остаётся генерировать угол в диапазоне [0;2π] и считать координаты:
C#
1
2
3
4
5
6
7
static void NextRandomOnCircle(double radius,out double x,out double y)
{
    Random rnd = new Random(DateTime.Now.Millisecond);
    double phi = 2*Math.PI*rnd.NextDouble();
    y = radius * Math.Sin(phi);
    x = radius * Math.Cos(phi);
}
3
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10
11.01.2014, 22:46  [ТС]
Идея с полярной системой интересна)Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2014, 22:46
Помогаю со студенческими работами здесь

Определить принадлежность точки окружности
Определите, лежит ли точка А (a,b) на окружности , внутри или вне её.

Определить принадлежность точки к окружности
определить принадлежность точки к окружности x^2+y^2&lt;=R^2 при x&lt;0

Принадлежность точки окружности или прямой
На форме представлены прямые и окружности (редактор графов), как определить, что курсор попал в один из объектов и определить в какой...

Принадлежность точки только правой части окружности
(x-x1)^2 + (y-y1)^2 &lt;= R^2, где R - радиус окружности. Т.к мне нужна принадлежность только к правой части, я правильно понимаю что Y...

Проверить принадлежность точки с заданными координатами заданному сегменту окружности
Окружность на плоскости задана тремя лежащими на ней точками A, B, C. Фигура S представляет собой сегмент, ограниченный этой окружностью и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru