С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 36

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

11.01.2014, 21:57. Показов 1108. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите пожалуйста! Написал программу для курсовой, но она не работает как надо. с массивами запутался... Нужно чтобы внутри большой окружности наложений маленьких окружностей друг на друга не было!
Нужно получить что то типа такого: http://www2.stetson.edu/~efriedma/cirincir/

Условие расстояния между двумя центрами >=2*R2 не выполняется =(((
Вложения
Тип файла: rar Новая папка.rar (166.6 Кб, 13 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2014, 21:57
Ответы с готовыми решениями:

Пересечение прямой с окружностями
на плоскости заданы множество точек А и множество окружностей В. Найдите две такие различные точки из А, что проходящая через них прямая...

Построить на экране касательную к данной окружности, проходящую через заданную точку на окружности
Окружность задана координатами центра и радиусом. Построить на экране касательную к данной окружности, проходящую через заданную точку на...

Canvas, рисование мишени с N окружностями и равноизменяющимся радиусом
Задача заключается в рисовании мишени с N окружностями и равноизменяющимся радиусом, но в нете не могу найти решения проблемы такой, что...

4
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
12.01.2014, 12:50
Вот такой код на клик кнопки напиши:
Кликните здесь для просмотра всего текста
Delphi
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
44
45
46
47
48
49
50
51
52
procedure TForm1.Button1Click(Sender: TObject);
const
  N = 10000;
var
  mas,mas1 : array[1..2,1..N] of Integer;
  i, j, m: Integer;
  b : boolean;
begin
  R1:=StrToInt(Edit1.Text);
  R2:=StrToInt(Edit2.Text);
  k:=1;
 
  with PaintBox1.Canvas do
  Ellipse(0,0,2*R1,2*R1);
 
  for i:=1 to 20*Round(Sqr(R1)/sqr(R2)) do
  begin
    x0:=Random(2*R1-R2);
    y0:=Random(2*R1-R2);
 
    if Sqrt(sqr(x0 - R1)+sqr(y0 - R1))+R2<=R1 then
    begin
      mas[1,k]:=x0;
      mas[2,k]:=y0;
      k:=k+1;
    end;
  end;
 
  m:=0;
  with PaintBox1.Canvas do
  for i:=1 to k do
  begin
    b:=false;
    //Проверяем очередную окружность на непересечение с уже нарисованными
    for j:=1 to m do
    if Sqrt(sqr(mas1[1,j] - mas[1,i])+sqr(mas1[2,j] - mas[2,i]))<2*R2 then
    begin
      b:=True; //пересекается
      break;
    end;
 
    if Not b then
    //если не пересекается ни с одной ранее нарисованной
    //тоже выдадим
    begin
      inc(m);
      mas1[1,m]:=mas[1,i]; //mas1 - массив в котором накапливаются нарисованные окружности
      mas1[2,m]:=mas[2,i];
      Ellipse(mas[1,i]-R2,mas[2,i]-R2,mas[1,i]+R2,mas[2,i]+R2);
    end;
  end;
end;

Правда, поскольку у тебя внутренние окружности выбираются случайным образом, - такого красивого рисунка, как на тех картинках, не получится. Но, по крайней мере, не пересекаются.
1
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 36
12.01.2014, 13:09  [ТС]
Спасибо большое! Правда ещё можно ещё один вопрос: когда строится видно что ещё остается место где могут поместиться окружности, но они не заполняются! как это можно исправить? Можно увеличить количество чисел в рандоме, но тогда комп действительно будет "думать" дольше... Или ещё можно как-то???
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
12.01.2014, 15:15
Там нужно не рандомом. Сейчас думаю, как построить по тому принципу, как на тех рисунках. Придумаю - выложу.

Добавлено через 2 часа 4 минуты
Вот так тебя не устроит?
Кликните здесь для просмотра всего текста
Delphi
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
procedure TForm1.Button2Click(Sender: TObject);
var
  x,y,i,k,r: Integer;
  a,fi : Extended;
begin
  //Нужно добавить в описание Uses ссылку на модуль Math !!!!!!!!
  R1:=StrToInt(Edit1.Text);
  R2:=StrToInt(Edit2.Text);
  If R2>R1 Then
  Begin
    i:=R1; R1:=R2; R2:=i;
  End;
 
  x0:=R1; y0:=R1; //Центр большой окружности
  PaintBox1.Canvas.Ellipse(0,0,2*R1,2*R1);
 
  r:=R1-R2;
  Repeat
    //Считаем угол поворота...
    If r<R2 Then a:=2*Pi Else
    a:=ArcCos(1-2*Sqr(R2/r));
    //Считаем количество окружностей
    k:=Trunc(2*Pi/a);
    //Рисуем окружности...
    fi:=0;
    With PaintBox1.Canvas Do
    For i:=1 To k Do
    Begin
      x:=Round(r*Sin(fi))+R1;
      y:=Round(r*Cos(fi))+R1;
      Ellipse(x-R2,y-R2,x+R2,y+R2);
 
      fi:=fi+a;
    End;
    r:=r-2*R2;
  Until r<0;
end;

Чтобы плотнее уложить всё усложняется.
2
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 36
12.01.2014, 15:18  [ТС]
Спасибо!) это то что нужно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2014, 15:18
Помогаю со студенческими работами здесь

Найти площадь кольца, заключенного между двумя окружностями заданных радиусов
1. Найти площадь кольца, заключенного между двумя окружностями заданных радиусов. Радиус меньшей окружности уменьшать до 0. Изобразить...

Массив с окружностями
Даны 5 окружностей, заданные координатами центров и радиусами, найти номера уединённых окружностей т.е. окружности которые не не...

Задача с окружностями
Помогите сделать задачу в visual studio 2015 по следующему условию: Сколько кругов заданного множества является концентрическими

Определить какая из точек лежит на окружности, какая внутри окружности, а какая вне окружности
Не могу не как понять какую формулу писать Вот задания Заданы координаты двух точек А(х,у) и В(х,у) и радиус окружности r. Определить...

Заполните экран окружностями
Заполните экран окружностями в случайных местах, случайных радиусов и цветов.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru