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

Заполнение окружности рандомными пикселями

30.04.2022, 22:24. Показов 2217. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовал код для заполнения прямоугольника рандомными пикселями, помогите реализовать тоже самое, но уже для окружности с координатами центра W и H и радиусом RK
C#
1
2
3
4
5
6
7
8
9
10
double[] cwidth = new double[(int)E];
            double[] cheight = new double[(int)E];
            var rnd = new Random();
            for (int z = 0; z < E - 1; z++)
            {
                cwidth[z] = rnd.Next((int)(W - RK), (int)(W + RK));
                cheight[z] = rnd.Next((int)(H - RK), (int)(H + RK));
                this.g.SetPixel((int)cwidth[z], (int)cheight[z], button8.BackColor);
                pictureBox1.Image = this.g;
            }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2022, 22:24
Ответы с готовыми решениями:

Заполнение ступенчатого массива рандомными числами
Всем привет. У меня такая проблема: ступенчатый массив создан, но я не знаю как заполнить его рандомными числами. Вот мой ступенчатый...

Заполнение рандомными числами
Здравствуйте, как сделать автозаполнение textBox-ов рандомными числами ? На скриншоте показано, что текст боксы заполнены вручную. ...

Заполнение DataGridView рандомными значениями
Добрый вечер, у меня возникла проблема с решением одной задачи. Так вот, у меня есть элемент DataGridView c оформленными строками и...

21
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 11:53
Fric, рандомные пиксели - это пиксели на случайных позициях в границах окружности?
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 12:22  [ТС]
Да, совершенно верно

Добавлено через 21 секунду
kolorotur, да
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 13:17
Fric, генерируйте случайную дистанцию от центра и случайный угол:
C#
1
2
3
4
5
double r = RK * Math.Sqrt(rnd.NextDouble());
double th = rnd.NextDouble() * 2 * Math.PI;
 
int x = (int) (W + r * Math.Cos(th));
int y = (int) (H + r * Math.Sin(th));
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 13:20  [ТС]
kolorotur, а как вывести из на экран?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 13:22
Fric, так же, как у вас:
C#
1
this.g.SetPixel(x, y, button8.BackColor);
После цикла:
C#
1
pictureBox1.Image = this.g;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
01.05.2022, 13:25
Fric, дополню kolorotur.

Fric, вы можете взять свой метод для заполнения прямоугольника, получать в нём точки для описанного квадрата и отбрасывать из них те что не попадают в круг.
Такой приём можно использовать для фигуры любой формы.
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 13:32  [ТС]
kolorotur, подскажите как будет выглядеть цикл, а то что-то не пойму
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 13:35
Лучший ответ Сообщение было отмечено Fric как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < 100; i++)
{
    double r = RK * Math.Sqrt(rnd.NextDouble());
    double th = rnd.NextDouble() * 2 * Math.PI;
 
    int x = (int) (W + r * Math.Cos(th));
    int y = (int) (H + r * Math.Sin(th));
 
    this.g.SetPixel(x, y, button8.BackColor);
}
pictureBox1.Image = this.g;
Условие цикла — количество пикселей.
Код из первого поста точно вы написали?
1
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 13:39  [ТС]
kolorotur, да
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
01.05.2022, 13:43
Лучший ответ Сообщение было отмечено Fric как решение

Решение

Fric, для целочисленных координат, то-то подобное:
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
42
43
    public static partial class StaticMethods
    {
        private static readonly Random random = new Random();
        public static (int x, int y)[] GetRandomPoints(int x0, int y0, int x1, int y1, int count, Func<int, int, bool> func)
        {
            (int x, int y)[] points = new (int x, int y)[count];
            if (x0 > x1)
                (x0, x1) = (x1, x0);
            if (y0 > y1)
                (y0, y1) = (y1, y0);
            x1++;
            y1++;
 
            for (int i = 0; i < points.Length; i++)
            {
                int x = random.Next(x0, x1);
                int y = random.Next(y0, y1);
                if (func(x, y))
                {
                    points[i] = (x, y);
                }
                else
                {
                    i--;
                }
            }
 
            return points;
        }
 
        public static (int x, int y)[] GetRandomPointsOfRectabgle(int x0, int y0, int x1, int y1, int count)
            => GetRandomPoints(x0, y0, x1, y1, count, (x, y) => true);
 
        public static (int x, int y)[] GetRandomPointsOfCircle(int xCenter, int yCenter, int radius, int count)
            => GetRandomPoints(xCenter - radius, yCenter - radius, xCenter + radius, yCenter + radius, count,
                (x, y) =>
                {
                    int dx = xCenter - x;
                    int dy = yCenter - y;
                    return (dx * dx + dy * dy) <= radius * radius;
                });
 
    }
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 13:47
Fric, если не секрет, для чего это понадобилось?
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 14:16  [ТС]
kolorotur, необходимо было реализовать краскопульку как в Paint

Добавлено через 1 минуту
kolorotur, а можно ещё вопрос, как узнать сколько пиксейлей надо нарисовать в данной окружности? Потому что если нахожу площадь окружности и рисую пиксели по площади окружности, то ему не хватает пикселей, чтоб заполнить окружность полностью.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
01.05.2022, 14:20
Цитата Сообщение от Fric Посмотреть сообщение
сколько пиксейлей надо нарисовать в данной окружности?
Задавайте с коэффициентом от R2.
коэффициентом будет означать плотность заполнения.
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 14:26  [ТС]
Элд Хасп, а как высчитать этот коэффициент?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
01.05.2022, 14:39
Цитата Сообщение от Fric Посмотреть сообщение
как высчитать этот коэффициент?
Кисти же бывают разной плотности.
Для разной плотности - разные коэффициенты: 0 - пустая кисть, > 2 почти сплошная кисть.
Определите эмпирически допустимый диапазон для вашего приложения и пусть пользователь сам выбирает из этого диапазона.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.05.2022, 14:46
Цитата Сообщение от Fric Посмотреть сообщение
а как высчитать этот коэффициент?
Площадь круга — https://www.cyberforum.ru/cgi-bin/latex.cgi?\pi{r}^{2}, можно брать это значение для ~100%-й заливки (по факту она не будет 100%-й из-за повторной генерации значений).
Умножайте это число на нужный коэффициент: например, на 0.1 для ~10%-й заливки и т.д.
Чем больше значение, тем выше плотность.
0
01.05.2022, 15:01

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
Код из первого поста точно вы написали?
Цитата Сообщение от Fric Посмотреть сообщение
kolorotur, да
Насмешили )

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,115
Записей в блоге: 2
01.05.2022, 15:19
Цитата Сообщение от Fric Посмотреть сообщение
как высчитать этот коэффициент?
Зависимость плотности заполнения от коэффициента к https://www.cyberforum.ru/cgi-bin/latex.cgi?\pi{r}^{2}: ρ = (2k-1)/2k.
0
1 / 1 / 0
Регистрация: 11.11.2020
Сообщений: 132
01.05.2022, 17:56  [ТС]
Элд Хасп, я так понимаю, что k - это то что выберет пользователь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2022, 17:56
Помогаю со студенческими работами здесь

Создание БД и таблиц и заполнение их рандомными данными
Добрый день. Кейс следующий, юзерЪ вводит имя сервера и бд, если такой бд нет, её нужно создать. С этим проблем нет, заюзал просто...

Заполнение кнопок рандомными цветами с ограничением
Сделал 2 листа, в одном 6 кнопок, во втором 3 цвета и рандомно заполняю эти баттоны цветами из листа. Но, заполняются они хаотично. Как мне...

Рандомное заполнение окружности пикселями
Имеется окружность радиусом R и координатами центра W и H, необходимо рандомно пикселями заполнить её.

Рандомное заполнение круга пикселями
Всем доброго времени суток! Не раз выручали ребята на форуме, за что очень благодарен им :) Надеюсь, в этот раз не сочтут мою просьбу за...

Заполнение массива рандомными числами
есть последовательность чисел a1...a30. заполняю ее рандомными числами. нужно сделать так, чтобы эти числа попарно отличались друг от...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru