Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
2 / 2 / 1
Регистрация: 04.01.2014
Сообщений: 10

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

11.01.2014, 17:34. Показов 3294. Ответов 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
8952 / 4864 / 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
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru